zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Docker和k8s的区别与介绍
    NFS网络文件系统详解
    NFS文件系统及搭建NFS共享服务
    Tomcat 端口配置,及原理详解
    svn使用教程
    buff/cache内存占用过多
    关于xcode:如何在Objective-C中使用符号断点获取参数
    iOS开发消除编译警告
    建模的能力才是一个人和核心能力
    android sutdio 环境搭建
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7399403.html
Copyright © 2011-2022 走看看