7.Spring整合Hibernate_1

Spring 整合 Hibernate

  1.Spring指定 database,给下面创建的 SessionFactory用

 1 <!-- !!!!!可以使用 @Resource 将 这个bean对象注入到DAO中,供DAO使用 !!!!! -->
 2 
 3     <!-- 这是将一些目标参数写死在value中,也可以现在配置文件中 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
 4         destroy-method="close"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> 
 5         </property> <property name="url"> <value>jdbc:mysql://localhost:3306/spring</value> 
 6         </property> <property name="username"> <value>root</value> </property> <property 
 7         name="password"> <value>root</value> </property> </bean> -->
 8 
 9 
10     <!-- 使用配置文件的方式,将数据库的一些驱动信息,写到配置文件中 -->
11     <bean
12         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
13         <!-- 可以向想象得到,在 PropertyPlaceholderConfigurer 中 存在一个 setLocations(List or 
14             Array) ,这些配置信息,就放在 locations中 -->
15         <property name="locations">
16             <!-- 让Spring 去 src 目录下去找 jdbc.properties 文件 -->
17             <value>classpath:jdbc.properties</value>
18         </property>
19     </bean>
20 
21     <bean id="dataSource" destroy-method="close"
22         class="org.apache.commons.dbcp.BasicDataSource">
23 
24         <!-- value 为 配置文件中 key 为 jdbc.driverClassName 的值 -->
25         <property name="driverClassName" value="${jdbc.driverClassName}" />
26         <property name="url" value="${jdbc.url}" />
27         <property name="username" value="${jdbc.username}" />
28         <property name="password" value="${jdbc.password}" />
29     </bean>

  2.创建 SessionFactory ,然后注入给DAO去使用

 1 <!-- 往Spring容器中注入 sessionFactory对象(这个sessionFactory是Spring修改过的),
 2          往sessionFactory 中注入 dataSource 
 3          和 annotatedClasses(实体对象)
 4          和 hibernateProperties(hibernate配置信息)
 5          这三者相当于 hibernate.cfg.xml 这个 hibernate 的配置文件-->
 6 <!-- 那么 只需要往DAO中注入sessionFactory ,那么就和 hibernate一样  生成session,操作实体-->
 7 
 8     <bean id="sessionFactory"
 9         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
10         <property name="dataSource" ref="dataSource" />
11         <property name="annotatedClasses">
12             <list>
13                 <value>com.bjsxt.model.User</value>
14             </list>
15         </property>
16         <property name="hibernateProperties">
17             <props>
18                 <prop key=" hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
19                 <prop key="hibernate.show_sql">true</prop>
20             </props>
21         </property>
22     </bean>
23 
24 </beans>

  3.往DAO中注入SessionFactory

 1 @Component("userDAO") 
 2 public class UserDAOImpl implements UserDAO{
 3     private SessionFactory sessionFactory;
 4     
 5     public SessionFactory getSessionFactory() {
 6         return sessionFactory;
 7     }
 8     
 9     //在DAO中 注入 SessionFactory
10     @Resource
11     public void setSessionFactory(SessionFactory sessionFactory) {
12         this.sessionFactory = sessionFactory;
13     }
14 
15     @Override
16     public void save(User user) {
17         Session session = sessionFactory.openSession();
18         session.beginTransaction();
19         session.save(user);
20         session.getTransaction().commit();
21         System.out.println(sessionFactory.getClass());
22         System.out.println("a user saved");
23     }
24     
25     
26 }
原文地址:https://www.cnblogs.com/xuzekun/p/7399403.html