zoukankan      html  css  js  c++  java
  • Spring整合Hibernate

    Spring整合Hibernate操作

    1.创建web Project

    2.添加jar包

    Spring的jar包+Hibernate的jar包+数据库连接jar包 

    3.书写配置文件

      3.1 applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.springframework.org/schema/beans" 
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd  
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-4.3.xsd  
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.3.xsd ">
      <!--1.加载数据库的属性配置文件  --> 
      <context:property-placeholder location="classpath:dbinfo.properties" ></context:property-placeholder>
      <!-- 2.配置c3p0数据源 -->
      <bean name="ds" class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <property name="driverClass" value="${driverClass}"></property>
         <property name="jdbcUrl" value="${jdbcUrl}"></property>
         <property name="user" value="${user}"></property>
         <property name="password" value="${password}"></property>
      </bean>
      <!-- 3.将Hibernate的sessionFactory对象交给Spring来创建管理维护 -->
      <bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
          <!-- 3.1 注入数据源连接池信息 -->
          <property name="dataSource" ref="ds"></property>
          <!-- 3.2 hibernate的额外配置 (可选配置)-->
          <property name="hibernateProperties">
            <props>
               <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                 <!-- 隔离级别 -->
                <prop key="hibernate.connection.isolation">4</prop>
                <!-- 目的:要使用getCurrentSession()获取当前线程绑定的Session,必须要做如下配置:必须要使用Spring提供的SpringSessionContext-->
            <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate5.SpringSessionContext</prop> 
            </props>
          </property>
          <!-- 3.3 加载映射文件(不能重复加载) -->
          <property name="mappingLocations" value="classpath:com/xx/domain/*.hbm.xml"></property>
      </bean>
     <!-- 2.配置dao层 -->
      <bean name="userDao" class="com.xx.dao.impl.UserDaoimpl">
         <!-- 注入sessionFatory对象 -->
         <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>
      <!-- 3.配置service层 -->
      <bean name="userService" class="com.xx.service.impl.UserServiceimpl">
        <property name="userDao" ref="userDao"></property>
      </bean> 
     <!-- 4.配置事务管理 -->
      <bean name="tm" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
          <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>
     <!-- 5.开启事务 (两种方式选一)-->
    <!-- 方式一:注解开启事务 --> <tx:annotation-driven transaction-manager="tm"/>
    <!-- 方式二:XML配置开启事务 -->
    <!-- 配置通知--> <tx:advice id="txAdvice" transaction-manager="tm"> <tx:attributes> <tx:method name="*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/> </tx:attributes> </tx:advice> <!-- 配置切面 --> <aop:config proxy-target-class="true">
        <!-- 配置切点 -->
    <aop:pointcut expression="execution(* com.itqf.service.impl.*Serviceimpl.*(..))" id="pt"/>
        <!-- 织入 -->
    <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/> </aop:config> </beans>  

      3.2 web.xml(重点)

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns
    ="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation
    ="http://xmlns.jcp.org/xml/ns/javaee
    http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1"> <display-name>SSH_CRM</display-name> <!--监听web程序:在程序启动时就加载applicationContext.xml文件--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
    <!--加载applicationContext.xml文件-->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext2.xml</param-value>
    </context-param> </web-app>

    4.创建持久化类

    package com.xx.domain;
    public
    class User{ private Integer id; private String name; private Integer age; //省略set/get方法 }

    5.创建持久化类对应的映射文件(持久化类名.hbm.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="com.xx.domain">
        <class name="User" table="user">
            <id name="id">
                <generator class="native"></generator>
            </id>
            <property name="name"></property>
            <property name="age"></property>
        </class>
    </hibernate-mapping>   

    6.配置service层和dao层

        6.1 dao层实现类

    //dao层实现类需要继承HibernateDaoSupport 在代码中使用getHibernateTemplate()
    public class CustomerDaoimpl  extends  HibernateDaoSupport implements CustomerDao{
        @Override
        public void insertCustomer(User user) {
            getHibernateTemplate().save(customer);
        }
    } 

     6.2 service层实现类

    //方式一:注解配置事务
    @Transactional
    public class UserServiceimpl implements UserService{
         private UserDao userDao;
         public void setUserDao (UserDao userDao) {
            this.userDao= userDao;
        } 
         public void save(User user){
              userDao.insertUser(user);
         }                            
    }
    //方式二:xml配置事务
    public class UserServiceimpl implements UserService{
         private UserDao userDao;
         public void setUserDao (UserDao userDao) {
            this.userDao= userDao;
        } 
         public void save(User user){
              userDao.insertUser(user);
         }                            
    } 

    7.测试

    public class Test1{
        @Resource(name="userService") 
        private UserService userService;
        public void test1(){
            User user = new User();
            user.setId(1);
            user.setName("哈哈");
            user.setAge(123);
            userService.save(user);    
       }
    }
  • 相关阅读:
    Sass
    小程序_统计字符
    小程序_乘法表
    abbreviation(缩写)
    Linux命令整理
    生出树状的文件夹结构
    Excel的使用技巧
    小程序_数字从小到大输出
    Delphi 之Inherited详解
    学习结构[记录]类型(4)
  • 原文地址:https://www.cnblogs.com/a77355699/p/8033919.html
Copyright © 2011-2022 走看看