Java(Seasar2)の「S2JDBC」は、DBのアクセスとJavaオブジェクトの変換を行うO/Rマッピングのフレームワーク。
各データベースへの接続設定方法は、設定ファイルに記載例があるので、それを流用すればOK。
以下の代表的なデータベースの設定例がある。
- Oracle
- PostgreSQL
- MySQL
- DB2
- Microsoft SQL Server など
今回は、「SQL Server」。
設定ファイルに記述する接続文字列で苦労したので、忘れぬようメモ。
なお、今回のバージョンは以下です。
- SQL Server Standard 2008 R2
「s2jdbc.dicon」ファイル
今回のSQL Serverは「2008」なので、MS SQL Server (2005以降)の「mssql2005Dialect」を設定する。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <include path="jdbc.dicon"/> <include path="s2jdbc-internal.dicon"/> <component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl"> <property name="maxRows">0</property> <property name="fetchSize">0</property> <property name="queryTimeout">0</property> <property name="dialect">mssql2005Dialect</property> </component> </components>
「jdbc.dicon」ファイル
ここで、データベース接続文字列を書く。
今回の場合は、データベースは名前付きインスタンス。
Microsoft公式サイトにあるように「サーバー名\\インスタンス名;」(「\」2つでエスケープシーケンス)としたが、「Unknown server host name ‘サーバー名\インスタンス名’.」というエラーとなる。
最終的に、「サーバー名;instance=インスタンス名;」とすることで無事に接続できた。
こんな感じです。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components namespace="jdbc"> <include path="jta.dicon"/> <!-- for SQLServer --> <component name="xaDataSource" class="org.seasar.extension.dbcp.impl.XADataSourceImpl"> <property name="driverClassName"> "net.sourceforge.jtds.jdbc.Driver" </property> <property name="URL"> "jdbc:jtds:sqlserver://サーバー名;instance=インスタンス名;databaseName=データベース名;" </property> <property name="user">"ユーザー"</property> <property name="password">"パスワード"</property> </component> <component name="connectionPool" class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl"> <property name="timeout">600</property> <property name="maxPoolSize">10</property> <property name="allowLocalTx">true</property> <destroyMethod name="close"/> </component> <component name="DataSource" class="org.seasar.extension.dbcp.impl.DataSourceImpl" /> </components>
SQL Serverのインスタンス名の確認
今回は名前付きインスタンスだったので、SQL Serverのインスタンス名の確認方法も。
「SQL Server Management Studio」⇒サーバーへログイン⇒左側の「オブジェクトエクスプローラ」⇒対象のデータベースサーバ上で右クリック⇒「プロパティ」で「サーバーのプロパティ」を開く。
左側の「接続」⇒「接続のプロパティを表示します」で「接続プロパティ」を開く。
「製品」⇒「インスタンス名」に名前付きインスタンスの場合、インスタンス名が表示される。
コメント