• spring与hibernate的整合


    一.导包:

    <properties>
    <spring-version>4.3.10.RELEASE</spring-version>
    <hibernate-version>5.2.11.Final</hibernate-version>
    </properties>
    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring-version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${spring-version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>${spring-version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${spring-version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${spring-version}</version>
    <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>${hibernate-version}</version>
    </dependency>
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.42</version>
    </dependency>
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.4</version>
    </dependency>
    二.配置spring-context.xml文件和需要引入的数据库连接配置
      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <beans xmlns="http://www.springframework.org/schema/beans"
      3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4        xmlns:context="http://www.springframework.org/schema/context"
      5        xmlns:P="http://www.springframework.org/schema/p"
      6        xmlns:util="http://www.springframework.org/schema/util"
      7        xmlns:tx="http://www.springframework.org/schema/tx"
      8        xmlns:aop="http://www.springframework.org/schema/aop"
      9        xsi:schemaLocation="http://www.springframework.org/schema/beans
     10         http://www.springframework.org/schema/beans/spring-beans.xsd
     11         http://www.springframework.org/schema/context
     12         http://www.springframework.org/schema/context/spring-context.xsd
     13         http://www.springframework.org/schema/util
     14          http://www.springframework.org/schema/util/spring-util.xsd
     15           http://www.springframework.org/schema/tx
     16           http://www.springframework.org/schema/tx/spring-tx.xsd
     17           http://www.springframework.org/schema/aop
     18           http://www.springframework.org/schema/aop/spring-aop.xsd">
     19    <context:component-scan base-package="com.yztc.app"/>
     20     <bean id="entityManagerFactory"
     21           class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
     22           P:dataSource-ref="dataSource"
     23           P:packagesToScan="com.yztc.app"
     24           P:jpaProperties-ref="jpaProperties"
     25           P:persistenceProvider-ref="persistenceProvider"
     26           P:jpaVendorAdapter-ref="jpaVendorAdapter"
     27     />
     28     <!--数据库连接配置-->
     29     <context:property-placeholder location="classpath:config/db.properties"/>
     30     <!--适配-->
     31     <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
     32         <property name="database" value="MYSQL"/>
     33         <property name="showSql" value="true"/>
     34         <property name="generateDdl" value="true"/>
     35         <property name="databasePlatform" value="org.hibernate.dialect.MySQL55Dialect"/>
     36     </bean>
     37     <bean id="persistenceProvider" class="org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider">
     38 
     39     </bean>
     40     <!--jpa 属性配置-->
     41     <util:properties id="jpaProperties">
     42         <!--设置外连接抓取树的最大深度-->
     43         <prop key="hibernate.max_fetch_depth">3</prop>
     44         <!--查询返回的行数-->
     45         <prop key="hibernate.jdbc.fetch_size">50</prop>
     46         <!--批量执行sql语句的满25条提交一次-->
     47         <prop key="hibernate.jdbc.batch_size">25</prop>
     48         <!-- 自动建表类型 validate|create|create-drop|update -->
     49         <prop key="hibernate.hbm2ddl.auto">create</prop>
     50         <!-- 是否显示SQL -->
     51         <prop key="hibernate.show_sql">true</prop>
     52         <!-- 显示SQL是否格式化 -->
     53         <prop key="hibernate.format_sql">false</prop>
     54         <!-- 关闭二级缓存 -->
     55         <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
     56         <!-- 关闭实体字段映射校验 -->
     57         <prop key="javax.persistence.validation.mode">none</prop>
     58     </util:properties>
     59     <!--第三方的连接池的配置 c3p0     druid-->
     60     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
     61         <!--JDBC连接串-->
     62         <property name="url" value="${jdbc.url}" />
     63         <!--数据库用户名称-->
     64         <property name="username" value="${jdbc.username}" />
     65         <!--数据库密码-->
     66         <property name="password" value="${jdbc.password}" />
     67         <!-- 连接池最大使用连接数量 -->
     68         <property name="maxActive" value="${jdbc.maxActive}"/>
     69         <!-- 初始化大小 -->
     70         <property name="initialSize" value="${jdbc.initialSize}"/>
     71         <!-- 获取连接最大等待时间 -->
     72         <property name="maxWait" value="${jdbc.maxWait}"/>
     73         <!-- 连接池最小空闲 -->
     74         <property name="minIdle" value="${jdbc.minIdle}"/>
     75         <!-- 逐出连接的检测时间间隔 -->
     76         <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}"/>
     77         <!-- 最小逐出时间 -->
     78         <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}"/>
     79         <!-- 测试有效用的SQL Query -->
     80         <property name="validationQuery" value="SELECT 'x'"/>
     81         <!-- 连接空闲时测试是否有效 -->
     82         <property name="testWhileIdle" value="true"/>
     83         <!-- 获取连接时测试是否有效 -->
     84         <property name="testOnBorrow" value="false"/>
     85         <!-- 归还连接时是否测试有效 -->
     86         <property name="testOnReturn" value="false"/>
     87     </bean>
     88     <!--事务-->
     89     <bean id="tx" class="org.springframework.orm.jpa.JpaTransactionManager">
     90         <property name="entityManagerFactory" ref="entityManagerFactory"/>
     91     </bean>
     92     <!--<tx:advice id="advice" transaction-manager="tx">-->
     93         <!--&lt;!&ndash;crud&ndash;&gt;-->
     94         <!--<tx:attributes>-->
     95             <!--<tx:method name="create*" rollback-for="java.lang.Exception"/>-->
     96             <!--<tx:method name="save*" rollback-for="java.lang.Exception"/>-->
     97             <!--<tx:method name="update*" rollback-for="java.lang.Exception"/>-->
     98             <!--<tx:method name="delete*" rollback-for="java.lang.Exception"/>-->
     99             <!--<tx:method name="get*" read-only="true" propagation="SUPPORTS"/>-->
    100             <!--<tx:method name="find*" read-only="true" propagation="SUPPORTS"/>-->
    101         <!--</tx:attributes>-->
    102     <!--</tx:advice>-->
    103     <!--<aop:config>-->
    104         <!--<aop:pointcut id="pointcut" expression="execution(* com.yztc.app.dao.*.*(..))"/>-->
    105         <!--<aop:advisor advice-ref="advice" pointcut-ref="pointcut"/>-->
    106     <!--</aop:config>-->
    107     <tx:annotation-driven transaction-manager="tx" proxy-target-class="true"/>
    108 </beans>
     1 #数据源连接配置
     2 jdbc.url = jdbc:mysql:///hibernate?true&characterEncoding=UTF-8
     3 jdbc.username = root
     4 jdbc.password = ROOT
     5 jdbc.driver =com.mysql.jdbc.Driver
     6 #连接池最大使用连接数量
     7 jdbc.maxActive=20
     8 #初始化大小
     9 jdbc.initialSize=2
    10 #获得连接最大等待时间
    11 jdbc.maxWait=60000
    12 #连接池最小空间
    13 jdbc.minIdle=0
    14 #配置间隔多久才进行一次检测,检测需要关闭的空间连接,单位是毫秒
    15 jdbc.timeBetweenEvictionRunsMillis=3000
    16 #配置一个连接在池中最小生存的时间,单位是毫秒
    17 jdbc.minEvictableIdleTimeMillis=300000

    三.创建实体类

     1 package com.yztc.app.bean;
     2 
     3 import javax.persistence.Column;
     4 import javax.persistence.Entity;
     5 import javax.persistence.GeneratedValue;
     6 import javax.persistence.Id;
     7 
     8 /**
     9  * _ooOoo_
    10  * o8888888o
    11  * 88" . "88
    12  * (| -_- |)
    13  * O = /O
    14  * ___/`---'\____
    15  * .   ' \| |// `.
    16  * / \||| : |||// 
    17  * / _||||| -:- |||||- 
    18  * | | \ - /// | |
    19  * | \_| ''---/'' | |
    20  *  .-\__ `-` ___/-. /
    21  * ___`. .' /--.-- `. . __
    22  * ."" '< `.___\_<|>_/___.' >'"".
    23  * | | : `- \`.;` _ /`;.`/ - ` : | |
    24  *   `-. \_ __ /__ _/ .-` / /
    25  * ======`-.____`-.___\_____/___.-`____.-'======
    26  * `=---='
    27  * .............................................
    28  *
    29  * @author bindu
    30  * @date 2017-10-23 17:44
    31  */
    32 
    33 @Entity
    34 public class User {
    35     @Id
    36     @GeneratedValue
    37     @Column(name = "UID")
    38     private Long uid;
    39     @Column(name = "NAME",length = 32)
    40     private String name;
    41 
    42 
    43 
    44     public Long getUid() {
    45         return uid;
    46     }
    47 
    48     public void setUid(Long uid) {
    49         this.uid = uid;
    50     }
    51 
    52     public String getName() {
    53         return name;
    54     }
    55 
    56     public void setName(String name) {
    57         this.name = name;
    58     }
    59 
    60     public User(String name) {
    61         this.name = name;
    62     }
    63 }

    三.dao

    package com.yztc.app.dao;
    
    import com.yztc.app.bean.User;
    
    public interface UserDao {
        User save1(User user)throws Exception;
    
    }
    package com.yztc.app.dao;
    
    import com.yztc.app.bean.User;
    import org.springframework.stereotype.Repository;
    import org.springframework.transaction.annotation.Transactional;
    
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    
    /**
     * _ooOoo_
     * o8888888o
     * 88" . "88
     * (| -_- |)
     * O = /O
     * ___/`---'\____
     * .   ' \| |// `.
     * / \||| : |||// 
     * / _||||| -:- |||||- 
     * | | \ - /// | |
     * | \_| ''---/'' | |
     *  .-\__ `-` ___/-. /
     * ___`. .' /--.-- `. . __
     * ."" '< `.___\_<|>_/___.' >'"".
     * | | : `- \`.;` _ /`;.`/ - ` : | |
     *   `-. \_ __ /__ _/ .-` / /
     * ======`-.____`-.___\_____/___.-`____.-'======
     * `=---='
     * .............................................
     *
     * @author bindu
     * @date 2017-10-23 17:48
     */
    
    @Repository("userDao")
    public class UserDaoImpl implements UserDao {
        @PersistenceContext
        private EntityManager em;
        @Override
        @Transactional(rollbackFor = Exception.class )
        public User save1(User user) throws Exception {
            em.persist(user);
            return null;
        }
    }

    四.测试类

     1 package com.yztc.app;
     2 
     3 import com.yztc.app.bean.User;
     4 import com.yztc.app.dao.UserDao;
     5 import com.yztc.app.dao.UserDaoImpl;
     6 import org.junit.Test;
     7 import org.junit.runner.RunWith;
     8 import org.springframework.test.context.ContextConfiguration;
     9 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    10 
    11 import javax.annotation.Resource;
    12 
    13 /**
    14  * _ooOoo_
    15  * o8888888o
    16  * 88" . "88
    17  * (| -_- |)
    18  * O = /O
    19  * ___/`---'\____
    20  * .   ' \| |// `.
    21  * / \||| : |||// 
    22  * / _||||| -:- |||||- 
    23  * | | \ - /// | |
    24  * | \_| ''---/'' | |
    25  *  .-\__ `-` ___/-. /
    26  * ___`. .' /--.-- `. . __
    27  * ."" '< `.___\_<|>_/___.' >'"".
    28  * | | : `- \`.;` _ /`;.`/ - ` : | |
    29  *   `-. \_ __ /__ _/ .-` / /
    30  * ======`-.____`-.___\_____/___.-`____.-'======
    31  * `=---='
    32  * .............................................
    33  *
    34  * @author bindu
    35  * @date 2017-10-23 17:51
    36  */
    37 
    38 @RunWith(SpringJUnit4ClassRunner.class)
    39 @ContextConfiguration("classpath:spring-context.xml")
    40 public class TestDao {
    41     @Resource
    42     UserDao dao;
    43     @Test
    44     public void testSave() throws Exception {
    45         dao.save1(new User("小明涵"));
    46     }
    47 }
  • 相关阅读:
    C++文件读写详解(ofstream,ifstream,fstream)
    C++ char*,const char*,string,int 的相互转换
    Properties --- C++读配置信息的类
    值得推荐的C/C++框架和库
    leetcode 264: Ugly Number II
    几种Tab的实现方法
    HBase数据存储格式
    粗略。。Java项目设计模式之笔记----studying
    开放的平台、向上的文化——揭秘万达电商(4)
    RecyclerView
  • 原文地址:https://www.cnblogs.com/1218-mzc/p/7735851.html
Copyright © 2020-2023  润新知