SpringとHibernateの連携
Spring設定ファイル作成(EclipseでのSpringIDEを使った作成手順)
- Eclipseでプロジェクトを右クリックし、「新規」→「その他」を選択。
- 「ウィザード選択」でSpring配下の「Spring Bean 定義」を選択する。
- 親フォルダー選択画面でコンテキストルート/WebContent/WEB-INF、ファイル名にapplicationContext.xmlを設定。
- 名前空間宣言の選択はそのままにして「終了」ボタンを押すと雛形が作成される。このファイルは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)は不要になる。
dataSource | dataSourceへの参照 |
---|---|
mappingResources | Hibernateマッピングファイルへのパス |
hibernate.dialect | 使用するデータベースのdialect |
<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>