熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Spring整合HIbernate

2022-06-13   來源: Java核心技術 

  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
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.