SpringとHibernateの連携

Spring設定ファイル作成(EclipseでのSpringIDEを使った作成手順)

  1. Eclipseでプロジェクトを右クリックし、「新規」→「その他」を選択。
  2. 「ウィザード選択」でSpring配下の「Spring Bean 定義」を選択する。
  3. 親フォルダー選択画面でコンテキストルート/WebContent/WEB-INF、ファイル名にapplicationContext.xmlを設定。
  4. 名前空間宣言の選択はそのままにして「終了」ボタンを押すと雛形が作成される。このファイルはSpringの設定ファイルとしてチェックされるので、誤った記述をするとエラーが表示される。

以降の内容で設定ファイルの記述を行う。

Spring設定ファイル作成(データソースの設定)

データベースへの接続に関しては、コネクションプーリングというコネクションをトランザクション毎に作成、解放するのではなく、一度作成したコネクションを解放せずに使い回す事で、データベースアクセスの負荷を減らす手法を使いたい。そこで、Tomcatに実装されているorg.apache.tomcat.dbcp.dbcp.BasicDataSourceというクラスを使うことにする。このクラスはJakarta Commons DBCPが提供しているものがベースになっているようだ。Springにはorg.springframework.jdbc.datasource.DriverManagerDataSourceというクラスも存在するが、これは常に新しいコネクションを使う。
設定ファイル/WEB-INF/applicationContext.xmlは、次の内容になる。コネクション情報は管理しやすいように別ファイル/WEB-INF/database.propertiesに記述した。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<beans>
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>/WEB-INF/database.properties</value>
			</list>
		</property>
	</bean>
	<bean id="dataSource"
		class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
        <property name="driverClassName">
			<value>${database.connection.driver_class}</value>
		</property>
		<property name="url">
			<value>${database.connection.url}</value>
		</property>
		<property name="username">
			<value>${database.connection.username}</value>
		</property>
		<property name="password">
			<value>${database.connection.password}</value>
		</property>
	</bean>
</beans>

/WEB-INF/database.propertiesの内容

database.connection.driver_class=oracle.jdbc.driver.OracleDriver
database.connection.url=jdbc:oracle:thin:@localhost:1521:SAMPLE
database.connection.username=sample
database.connection.password=sample

Spring設定ファイル作成(SessionFactoryの設定)

SpringからHibernateを使うことができるようにするため、SessionFactoryの設定を行う。ここではorg.springframework.orm.hibernate3.LocalSessionFactoryBeanクラスを使い、次のプロパティの設定を行う。これでHibernate側の設定(hibernate.cfg.xml)は不要になる。

dataSourcedataSourceへの参照
mappingResourcesHibernateマッピングファイルへのパス
hibernate.dialect使用するデータベースのdialect
Spring設定ファイル/WEB-INF/applicationContext.xmlに次の内容を追加する。

	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
                </property>
		<property name="mappingResources">
			<list>
				<value>sample/test/Employee.hbm.xml</value>
                        </list>
                </property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
                        </props>
                </property>
	</bean>