Java(Seasar2)-S2JDBCでのSQL Serverへの接続文字列と設定方法

Java プログラミング
この記事は約3分で読めます。

※当ブログではアフィリエイト広告を利用しています。

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」⇒サーバーへログイン⇒左側の「オブジェクトエクスプローラ」⇒対象のデータベースサーバ上で右クリック⇒「プロパティ」で「サーバーのプロパティ」を開く。

左側の「接続」⇒「接続のプロパティを表示します」で「接続プロパティ」を開く。

「製品」⇒「インスタンス名」に名前付きインスタンスの場合、インスタンス名が表示される。

参考サイト

Seasar2 – S2JDBC

SQL Serverのインスタンス名を調べる方法。 | exceedone (エクシード・ワン)

Oracle SQL Developer and a SQL Server Instance

コメント

タイトルとURLをコピーしました