Spring整合Hibernate的方式比較靈活比較多樣主要是在Spring提供的orgspringframeworkormhibernateLocalSessionFactoryBean中進行整合這個Bean提供了多種整合的方法
可以通過<property name=hibernateProperties>標簽將hibernate的配置信息以property的方式寫入
<property name=hibernateProperties>
<props>
<prop key=hibernatedialet>orghibernatedialectMySQLDialect</prop>
<prop key=nnectiondriver_class>commysqljdbcDriver</prop>
<prop key=nnectionurl>jdbc:mysql://localhost:/book</prop>
<prop key=nnectionusername>yuan</prop>
<prop key=nnectionpassword>hanyuan</prop>
<prop key=hibernateshow_sql>true</prop>
<prop key=nnectionautocommit>true</prop>
</props>
</property>
可以通過<property name=configLocation>標簽直接讀取hibernatecfgxml配置信息
<property name=configLocation>
<value>classpath:hibernatecfgxml</value>
</property>
可以通過<property name=dataSource>標簽指定連接池連接池中有連接數據庫的信息
<property name=dataSource>
<ref bean=myDataSource />
</property>
Spring整合Hibernate的步驟
一用以上三種方法之一配置Hibernate信息裝配LocalSessionFactoryBean
<bean id=sessionFactory
class=orgspringframeworkormhibernateLocalSessionFactoryBean>
<property name=hibernateProperties>
<props>
<prop key=hibernatedialet>orghibernatedialectMySQLDialect</prop>
<prop key=nnectiondriver_class>commysqljdbcDriver</prop>
<prop key=nnectionurl>jdbc:mysql://localhost:/book</prop>
<prop key=nnectionusername>yuan</prop>
<prop key=nnectionpassword>hanyuan</prop>
<prop key=hibernateshow_sql>true</prop>
<prop key=nnectionautocommit>true</prop>
</props>
</property>
<property name=mappingResources>
<list>
<value>com/sunflower/entity/Sutdenthbmxml</value>
</list>
</property> </bean>
其中<property name=mappingResources>屬性是配置映射文件的如果有很多映射文件要配置用這種方法就要為每個映射文件書寫配置信息這樣將會非常麻煩Spring的orgspringframeworkormhibernateLocalSessionFactoryBean提供了一個<property name=mappingDirectoryLocations>屬性將所有配置文件放置到一個統一的地方就能一次性進行配置例如
<property name=mappingDirectoryLocations>
<list>
<value>classpath:com/sunflower/entity</value>
</list>
</property>
將一次性配置comsunflowerentity包下的所有映射文件
二裝配orgspringframeworkormhibernateHibernateTemplate
<bean id=hibernateTemplate class=orgspringframeworkormhibernateHibernateTemplate>
<property name=sessionFactory>
<ref bean=sessionFactory />
</property>
</bean>
HibernateTemplate類是Spring提供給我們進行Hibernate持久層操作的類它對增刪查改方法進行了封裝通過這個類我們很方便就能操作數據庫<property name=sessionFactory>標簽配置LocalSessionFactoryBean
三裝配自定義DAO
<bean id=studentDao class=comsunflowerdaoimpStudentDaoImp>
<property name=hibernateTemplate>
<ref bean=hibernateTemplate />
</property>
</bean>
為每個Dao的實現類配置一個HibernateTemplate然後在Spring配置文件中進行裝配這樣就可以使用這個HibernateTemplate進行持久層的操作了
StudentDaoImpjava:
public class StudentDaoImp extends StudentDaoAdapter {
@Override
public void saveStudent(Student student) {
thishibernateTemplatesave(student)
}
@Override
public Student getStudent(Student student) {
return thishibernateTemplateget(Studentclass studentgetSno())
} }
進行測試Testjava:
public class Test {
@orgjunitTest
public void saveStudent() {
ApplicationContext context = new ClassPathXmlApplicationContext(
applicationContextxml)
StudentDao studentDao = (StudentDao) contextgetBean(studentDao)
Student student = new Student()
studentsetCno()
studentsetName(喜愛嘯)
studentsetScore()
studentDaosaveStudent(student)
} //
@orgjunitTest
public void getStudent() {
ApplicationContext context = new ClassPathXmlApplicationContext(
applicationContextxml)
StudentDao studentDao = (StudentDao) contextgetBean(studentDao)
Student student = new Student()
studentsetSno()
Student s = studentDaogetStudent(student)
Systemoutprintln(name: + sgetName())
} }
這裡需要注意的是因為這裡沒有用到事務處理Hibernate默認是不會自動提交事務的所以剛開始測試的時候出現數據插入不了數據庫的情況後來查了資料知道要將事務設置為自動提交才能將數據插入到數據庫中這裡只是為了測試就改了過來如頂上所寫<prop key=nnectionautocommit>true</prop>
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26506.html