■SpringMVC の小径 第8歩 あと一歩 DB連携 |
8-2)JDBC接続 |
Spring-MVCからDBに接続するためには、DBの接続情報の設定と Spring-MVC設定ファイルにMyBatisを使うための宣言を行う必要があります。 それぞれの設定を、「4-2)Spring-MVC設定」の節で説明した、 「applicationContext.xml」で定義してもいいのですが、 ここでは、それぞれのファイルを分割して定義することにします。 最初に、DB接続情報プロパティファイルの定義です。 /WebContent/WEB-INF/jdbc.properties というファイルを新規作成します。 中身は簡単。 jdbc.driverClassName=org.postgresql.Driver jdbc.url=jdbc:postgresql://host名/データベース名 jdbc.username=DBアカウント jdbc.password=DBアカウントパスワード 1)先頭行: PostgreSQL JDBC ドライバ接続情報なので、この通りに記述します。 2)2行目:host名 :DBが動作しているマシンのホスト名です。 外部のDBに接続しないのであれば、localhost で大丈夫です。 3)2行目:データベース名 DBをセットアップする際にデータベース名を定義しているはずなので、 この名前を指定します。(ここでは話の都合上、仮にjlabodbとしておきましょう)。 4)3行目:DBアカウント DBをセットアップする際にデータベースへのログインアカウントを作成しているはずなので、 このアカウントを指定します。(ここでは仮に、dbuser)としておきましょう。 5)4行目:DBアカウントパスワード DBログインアカウントのパスワードを指定します。 次は、Spring-MVC JDBCドライバー接続情報を定義します。 /WebContent/WEB-INF/applicationContextDB.xml というファイルを新規作成します。 ここは嗜好が分かれるところで、/WebContent/WEB-INF/applicationContext.xml に追記する 方法で書いても全く問題ありません。あくまで凡例なので、自分の好みで判断してください。 |
/WebContent/WEB-INF/applicationContextDB.xml |
24行目:直前で作成した、DB接続情報プロパティファイルを指定しています。 28行目~37行目:DB接続情報プロパティファイル(jdbc.properties)に記載されている それぞれのエイリアス名を、${}で括って指定します。 DB接続情報が変更になる場合は、jdbc.propertiesを変更するだけで、こちらは影響ありません。 使用するDataSourceクラスは、ネットを検索するとよく、SpringFramework標準の org.springframework.jdbc.datasource.DriverManagerDataSource を使用した例が出てきますが、 ここでは、tomcat-dbcpの org.apache.tomcat.dbcp.dbcp2.BasicDataSource クラスを使用します。 理由は、DriverManagerDataSourceはDB接続時にConnection Poolingを行わないため アクセスが多い場合、スループットが落ちるのを防ぐため、Connection Pooling機能を備えた tomcat.dbcp.dbcp2.BasicDataSourceを使用します。 apache commons-dbcp も使用可能ですが、個人的な好みで、tomcat-dbcpを使っています。 ※)tomcat-dbcpを利用するためには、pom.xml に以下の定義を追加する必要があります。 <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>>tomcat-dbcp</artifactId> <version>8.0.39</version> <scope>provided</scope> </dependency> バージョンは、使用しているtomcatのバージョンに合わせましょう。 あと、運用環境(おそらくtomcatで動いている)にデプロイする場合、 tomcat-dbcpは運用先ではtomcat配下に存在するはずなので、 tomcat-dbcpがデプロイされないように、scope は provided としておきます。 43行目~45行目:トランザクション用おまじない。 説明は割愛。 52行目:DBに対してデータを投入したり、DBからのデータを取得するための DTO(Data Table Object) いわゆるビジネスモデルクラスのパッケージを指定します。 これを宣言することで、SQLマッパーXMLでDTOを使用する際に、パッケージ名を省略できます。 ここは、プロジェクトごとに調整が必要です。 54行目:SQLマッパーXMLファイル群を配置する場所を指定します。 ここも、プロジェクトごとに調整が必要です。 60行目:O/Rマッパーインターフェースのパッケージを指定します。 ここも、プロジェクトごとに調整が必要です。 赤字以外は、どのプロジェクトでも定型的に使用可能です。 最後は、web.xmlデプロイメント記述子への、設定ファイルの追加を行います。 |
/WebContent/WEB-INF/web.xml |
後半の方にある、/WEB-INF/applicationContext.xmlの後ろに、カンマで区切って 上で作成した、/WEB-INF/applicationContextDB.xmlを追加します。 ワイルドカードを使用した、 <param-value>/WEB-INF/*.xml</param-value> という指定も可能ですが、個人的には明確に名前を指定してあげる方が好みです。 |
それでは、ここまで設定が完了したら、別途DBを起動しておいて、 Eclipseの「サーバービュー」でローカルホストTomcatを起動してみましょう。 「コンソールビュー」にTomcatの起動メッセージが表示され、 異常なログが出力されなければ設定完了です。 もし、起動に失敗するような場合は、設定情報をもう一度見直してください。 jdbc.propertiesの書き方に間違いがあったりする場合が考えられます。 |
※)サーバービューで、DB接続するアプリを動かす場合の注意点 前節で、DB(PostgreSQL)に接続するためのJDBCドライバーを、pom.xmlに定義しましたが、 Eclipseのサーバービューで、DB接続アプリを動かすためには実はこれだけでは動作しません。 JDBCドライバープラグイン(この環境の場合ですと、postgresql-9.3-1100.jdbc4.jar)を、 Ecliseで設定したTomcat動作環境に配置する必要があります。 このプロジェクトの場合ですと、「2-1)Tomcatサ-バ-の設定」で、 ${TOMECAT_HOME} = C:¥Program Files¥Apache Software Foundation¥apache-tomcat-8.0.36 に設定しているので、${TOMECAT_HOME}¥lib¥に、postgresql-9.3-1100.jdbc4.jarをコピーしておく必要があります。 |
大丈夫ですか? 付いてこられていますか? まだまだ、山道は坂が続きますよ。 これから本格的な登山道に入りますので、覚悟して付いてきてください。 |
8-1)DB環境の準備 ![]() |
8-2)JDBC接続 |
![]() |