@Contents
今日の学習時間。
- Day:22
- Today:4h
- Total:129h
学習内容について。
今までに学んだ内容を1つに繋げてみる。今回はそのメモ。
eclipseからターミナルを呼び出せるようにする。
- 外部ツールの構成をクリック
- 「プログラム」を右クリック→「新規」
- 「メインタブ」に下記を手入力
- ロケーション:
/usr/bin/open
- 引数:
-a Terminal ${project_loc}
- ロケーション:
- 「共通タブ」
- 「お気に入りのメニューに表示」の中の「外部ツール」にチェック
- 「適用」ボタンをクリックして設定を保存
- これで「外部ツール」から最初からメッセージボードのプロジェクトのフォルダにいる状態でターミナルが開く
eclipseプロジェクトを作成していく。
動的Webプロジェクトの作成
- ファイル→新規→動的Webプロジェクト
- プロジェクト名:message_board
- デフォルト・ロケーションを使用:☑︎
- ターゲット・ランタイム:Tomcat8 (Java8)
- 動的webモジュール バージョン:3.1
- 構成:Tomcat8 (Java8) デフォルト構成
- EARメンバーシップ:◻︎
- ワーキングセット:◻︎
- コンテキスト・ルート:(プロジェクト名そのまま)
- コンテンツ・ディレクトリー:WebContent
- web.xml デプロイメント記述子の生成:◻︎
.gitignore
を作成- 余計なファイルまでコミットしないようにするために
- プロジェクト名を右クリック→新規→ファイルで
.gitignore
を新規作成 - 以下のコードを保存
- JavaとMavenに関しての
.gitignore
をベースに作成
- JavaとMavenに関しての
# Compiled class file
*.class
# Package Files #
*.jar
*.war
*.ear
# Maven
target/
# eclipse
.classpath
.project
.settings/
build/
# OS Files
Thumbs.db
.DS_Store
- このままではプロジェクト・エクスプローラーに表示されないので以下のように設定を変更
- ①:プロジェクト・エクスプローラー右上にある白い▽をクリック
- ②:ビューのカスタマイズをクリック
- ③:「フィルター」タブにある
.*リソース
のチェックを外して「OK」をクリック
Gitにコミットする
$ git init
$ git add .
$ git commit -m "Initial commit"
Mavenプロジェクトへ変換
- JDBCドライバやJSTLなどをプロジェクトに取り込むためにMavenプロジェクトへ変換
- プロジェクトを右クリック→構成→Mavenプロジェクトへ変換
- グループIdを
jp.example
に変更
必要な外部ライブラリをインストール
pom.xml
を開き、依存関係タブから設定を4つ追加。
JDBCドライバ
- グループId:mysql
- アーティファクトId:mysql-connector-java
- バージョン:5.1.45
Hibernate
- グループId:org.hibernate
- アーティファクトId:hibernate-core
- バージョン:5.2.13.Final
JSTL(1)
- グループId:org.apache.taglibs
- アーティファクトId:taglibs-standard-impl
- バージョン:1.2.5
JSTL(2)
- グループId:javax.servlet.jsp.jstl
- アーティファクトId:javax.servlet.jsp.jstl-api
- バージョン:1.2.1
pom.xml
をGitにコミット$ git add .
$ git commit -m "Add pom.xml"
Tomcatの動作確認。
サーブレットを作成
- プロジェクト・エクスプローラー
Javaリソース
内src
でcontrollers
パッケージを作成 src
を右クリック→新規→「サーブレット」- 下記を設定
- Javaパッケージ:controllers
- クラス名:IndexServlet
- URLマッピング:
/IndexServlet
を/index
に変更 doPost
のチェックのみ外す
作成されたサーブレット
Tomcat8の設定と起動
- 「サーバー」タブを開く
- 「ローカル・ホストのTomcat8」を右クリックして「追加および除去」をクリック
- 使用可能の選択ボックスにある
message_board
を選択して「追加>」をクリック - 「完了」をクリック
- Tomcatを起動
- eclipseの内部ブラウザで http://localhost:8080/message_board/index にアクセス
- 「Served at: /message_board」と表示されていればOK
IndexServlet.java
をGitにコミット$ git add .
$ git commit -m "Add IndexServlet.java"
MySQLのセットアップ。
// パスワードを入力しログイン
mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11555
Server version: 5.7.31 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
// message_boardアプリ用のデータベースを作成
mysql> CREATE DATABASE message_board DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.04 sec)
// データベースに接続するアカウントを登録
mysql> CREATE USER 'mesuser'@'localhost' IDENTIFIED BY '******';
Query OK, 0 rows affected (0.09 sec)
// さきほど登録したアカウントにINSERTやUPDATE等の実行ができる権限を付与
mysql> GRANT ALL PRIVILEGES ON message_board.* TO 'mesuser'@'localhost';
Query OK, 0 rows affected (0.01 sec)
パスワードを忘れていてログインまでに無駄な時間を食った。。
message_board
データベースmessage_board
データベースに全権をもつmesuser
アカウント(パスワード:******
)
Hibernateのセットアップ。
プロジェクト・エクスプローラーでmessage_board
を右クリック→構成→JPAプロジェクトへ変換。
STEP
STEP
プロジェクト・ファセット
- Java(バージョン:1.8):☑︎
- JPA(バージョン:2.1):☑︎
- 動的webモジュール(バージョン:3.1):☑︎
JPAファセット
- プラットフォーム:Generic 2.1
- JPA実装:ライブラリー構成を無効
- 接続:なし
- 永続化クラス管理:注釈付きクラスを persistence.xml に記述
警告表示を消す(任意)
- プロジェクト・エクスプローラーで
message_board
を右クリック - プロパティー→JPA→エラー/警告
- プロジェクト固有の設定を可能にする:☑︎
- 指定された接続がないプロジェクト:無視
- 適応
persistence.xml
の各種設定プロジェクト・エクスプローラーでmessage_board
→JPAコンテンツ
→persistence.xml
。
一般タブ
- 名前:message_board
- 永続化プロバイダー:org.hibernate.jpa.HibernatePersistenceProvider
接続タブ
トランザクション・タイプ:リソース・ローカルに変更
JDBC接続プロパティー
- ドライバー:com.mysql.jdbc.Driver
- URL:jdbc:mysql://localhost/message_board?useSSL=false&useUnicode=true&characterEncoding=utf8
- ユーザー:mesuser
- パスワード:******
スキーマ生成タブ
- Database action:作成
- Scripts generation:デフォルト(なし)
プロパティータブに追加
- hibernate.dialect:org.hibernate.dialect.MySQL5Dialect
- hibernate.show_sql:true
- hibernate.format_sql:true
最後に忘れず保存。
こんな感じで自動生成される。
DTOの作成。
DTO
カラム名 | 用途 | データ型 | 補足 |
---|---|---|---|
id | メッセージID | 数値型 | 自動採番 |
title | メッセージのタイトル | 文字列型 | 必須入力 |
content | メッセージの内容 | 文字列型 | 必須入力 |
created_at | 作成日時 | 日時型 | 必須入力 |
updated_at | 更新日時 | 日時型 | 必須入力 |
Message
クラスの内容を保存するとエラーが表示される- 解決策
persistence.xml
を再度開く- 一般タブの右側にある「管理クラス」に
Message - models
を追加
DAOの作成。
DAOに相当するDBUtil
クラスをutils
パッケージ(新規で用意)の中に作成する。
package utils;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class DBUtil {
private static final String PERSISTENCE_UNIT_NAME = "message_board";
private static EntityManagerFactory emf;
public static EntityManager createEntityManager() {
return _getEntityManagerFactory().createEntityManager();
}
private static EntityManagerFactory _getEntityManagerFactory() {
if (emf == null) {
emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
}
return emf;
}
}
ここまで作成したデータベース関連のファイルをGitにコミット
$ git add .
$ git commit -m "Add database files"
※本来persistence.xml
にはMySQL のユーザ名・パスワードが記載されているのでGit管理の対象にするべきファイルではない。
今日の反省と明日の目標。
メッセージボードを作っていくのですが、コードを書き始める前にする準備が多いです。この作業は基本的なものなので自動的にスイスイできるようになりたいところ。結構、忘れてることが多かったのでその都度、自分の書いた記事を読み返して進めていきました。やはり、ブログをやってて良かったと思います。特にHibernateの存在意義がよくわからなかったので集中的に復習しました。簡単に言うとO/Rマッピングでインピーダンス・ミスマッチを解消するためのものです。
さて、3日前に首を寝違えてしまい、今日もその痛みと戦って参りましたが、だいぶ治ってきました。明日の朝には完全回復してると思うので、明日はジムにも行かず、プログラミングにフルコミットしていこうかなと思います。