Spring整合Hibernate的方式比较灵活,比较多样。主要是在Spring提供的org.springframework.orm.hibernate3.LocalSessionFactoryBean中进行整合,这个Bean提供了多种整合的方法:
1.可以通过<property name="hibernateProperties">标签将hibernate的配置信息以property的方式写入.
1 <property name="hibernateProperties"> 2 <props> 3 <prop key="hibernate.dialet">org.hibernate.dialect.MySQLDialect</prop> 4 <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop> 5 <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/book</prop> 6 <prop key="hibernate.connection.username">yuan</prop> 7 <prop key="hibernate.connection.password">hanyuan9113</prop> 8 <prop key="hibernate.show_sql">true</prop> 9 <prop key="hibernate.connection.autocommit">true</prop> 10 </props> 11 </property>
2.可以通过<property name="configLocation">标签直接读取hibernate.cfg.xml配置信息
1 <property name="configLocation"> 2 <value>classpath:hibernate.cfg.xml</value> 3 </property>
3.可以通过<property name="dataSource">标签指定连接池,连接池中有连接数据库的信息
1 <property name="dataSource"> 2 <ref bean="myDataSource" /> 3 </property>
Spring整合Hibernate的步骤:
一:用以上三种方法之一配置Hibernate信息,装配LocalSessionFactoryBean
1 <bean id="sessionFactory"
2 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
3
4 <property name="hibernateProperties">
5 <props>
6 <prop key="hibernate.dialet">org.hibernate.dialect.MySQLDialect</prop>
7 <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
8 <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/book</prop>
9 <prop key="hibernate.connection.username">yuan</prop>
10 <prop key="hibernate.connection.password">hanyuan9113</prop>
11 <prop key="hibernate.show_sql">true</prop>
12 <prop key="hibernate.connection.autocommit">true</prop>
13 </props>
14 </property>
15
16 <property name="mappingResources">
17 <list>
18 <value>com/sunflower/entity/Sutdent.hbm.xml</value>
19 </list>
20 </property>
21 </bean>
其中<property name="mappingResources">属性是配置映射文件的。如果有很多映射文件要配置,用这种方法就要为每个映射文件书写配置信息,这样将会非常麻烦。Spring的org.springframework.orm.hibernate3.LocalSessionFactoryBean提供了一个<property name="mappingDirectoryLocations">属性,将所有配置文件放置到一个统一的地方就能一次性进行配置。例如:
1 <property name="mappingDirectoryLocations"> 2 <list> 3 <value>classpath:com/sunflower/entity</value> 4 </list> 5 </property>
将一次性配置com.sunflower.entity包下的所有映射文件。
二:装配org.springframework.orm.hibernate3.HibernateTemplate
1 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 2 <property name="sessionFactory"> 3 <ref bean="sessionFactory" /> 4 </property> 5 </bean>
HibernateTemplate类是Spring提供给我们进行Hibernate持久层操作的类,它对增删查改方法进行了封装,通过这个类我们很方便就能操作数据库。<property name="sessionFactory">标签配置LocalSessionFactoryBean
三:装配自定义DAO
1 <bean id="studentDao" class="com.sunflower.daoimp.StudentDaoImp"> 2 <property name="hibernateTemplate"> 3 <ref bean="hibernateTemplate" /> 4 </property> 5 </bean>
为每个Dao的实现类配置一个HibernateTemplate,然后在Spring配置文件中进行装配,这样就可以使用这个HibernateTemplate进行持久层的操作了。
StudentDaoImp.java:
1 public class StudentDaoImp extends StudentDaoAdapter { 2 @Override 3 public void saveStudent(Student student) { 4 this.hibernateTemplate.save(student); 5 } 6 7 @Override 8 public Student getStudent(Student student) { 9 return this.hibernateTemplate.get(Student.class, student.getSno()); 10 } 11 }
进行测试,Test.java:
1 public class Test { 2 3 @org.junit.Test 4 public void saveStudent() { 5 ApplicationContext context = new ClassPathXmlApplicationContext( 6 "applicationContext.xml"); 7 StudentDao studentDao = (StudentDao) context.getBean("studentDao"); 8 9 Student student = new Student(); 10 11 student.setCno(4); 12 student.setName("喜爱啸"); 13 student.setScore(70); 14 15 studentDao.saveStudent(student); 16 17 } 18 19 // @org.junit.Test 20 public void getStudent() { 21 ApplicationContext context = new ClassPathXmlApplicationContext( 22 "applicationContext.xml"); 23 StudentDao studentDao = (StudentDao) context.getBean("studentDao"); 24 25 Student student = new Student(); 26 student.setSno(15); 27 Student s = studentDao.getStudent(student); 28 29 System.out.println("name:" + s.getName()); 30 } 31 32 }
这里需要注意的是,因为这里没有用到事务处理,Hibernate默认是不会自动提交事务的,所以刚开始测试的时候出现数据插入不了数据库的情况。后来查了资料,知道要将事务设置为自动提交才能将数据插入到数据库中,这里只是为了测试,就改了过来。如顶上所写<prop key="hibernate.connection.autocommit">true</prop>
相关推荐
ssh整合,针对spring整合hibernate代码,示例代码,教程。
spring整合hibernate实现事务处理 1.spring整合hibernate实现事务处理-注解方式 2.spring整合hibernate实现事务处理-XML方式
Spring整合hibernate(2)之基于HibernateTemplate的整合,jar需要自己添加!
Spring整合Hibernate的所有jar包,辛苦整理两个小时,给大家分享出来。 一共27个包
这是使用spring整合hibernate、struts时所要用到的核心jar包,洗完对大家有帮助
Spring4整合Hibernate4实现用户购买图书和结账等操作,整合主要实现用IoC容器来管理Hibernate的SessionFactory实例,并使Hibernate使用Spring所提供的声明式事务……
spring整合hibernate所用相关jar包,适合初学者
spring整合hibernate的所需jar包,很全的!
Spring整合Hibernate配置测试示例
这里的jar包只是说Spring自带的关于Hibernate的jar包,即这四个jar包: hibernate3.jar, hibernate-annotations.jar, hibernate-entitymanager.jar hibernate-commons-annotations.jar 因为我原来下载了一个,但是...
spring整合Hibernate学习笔记.docx spring整合Hibernate学习笔记.docx
在创建ssh或sh项目中必不可少的jar包引入,提供项目的依赖。
Spring+hibernate整合源代码 结束Sping+hibernate 的使用方法 包括演示示例
javaweb通过Spring整合Hibernate和Struts2实现简单的登录
Spring整合hibernate的实例
Spring框架整合Hibernate框架,为大家提供一个学习案例.
spring整合hibernate与struts2所需jar包
spring-hibernate.jar
6.5 Spring整合Hibernate 6.6 Spring提供的DAO支持 6.5.2 管理Hibernate的SessionFactory 6.5.3 使用HibernateTemplate 6.5.4 使用HibernateCallBack 6.5.6 使用IoC容器组装各种组件 6.5.7启动web容器读取xml配置...
spring整合hibernate hao