spring学习笔记整理(三)-----spring整合hibernate
一、导包:
(1)spring+aop+hibernate
(2)spring-orm
(3)数据源(spring-jdbc、commons-dbcp2、c3p0)
<properties>
<spring.version>4.3.13.RELEASE</spring.version>
<aspectj.version>1.8.13</aspectj.version>
<hibernate.version>5.2.12.Final</hibernate.version>
<mysql.version>5.1.38</mysql.version>
<junit.version>4.12</junit.version>
<jdk.version>1.8</jdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Spring Framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring ORM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- AOP -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<!-- Hibernate Framework-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- mysql connector-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
</plugins>
</build>
二、整合配置文件applicationContext-orm.xml
(1) 数据源选择
(2) 根据数据源创建SessionFactory(注入BaseDao)
(3) 事务管理器(简化BaseDao/持久层代码)
(4) 启动注解方式事务管理(配置事务注解到业务逻辑层)(其他:AOP配置方式事务)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 1.引入公共配置文件 db.properties--> <context:property-placeholder location="classpath:db.properties"/> <!--2.配置数据源(c3p0)--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${dataSource.driverClassName}"></property> <property name="jdbcUrl" value="${dataSource.url}"></property> <property name="user" value="${dataSource.username}"></property> <property name="password" value="${dataSource.password}"></property> <property name="maxPoolSize" value="40"></property> <property name="minPoolSize" value="1"></property> <property name="initialPoolSize" value="1"></property> <property name="maxIdleTime" value="20"></property> </bean> <!--3.配置SessionFactory,注入BaseDao--> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
//注入数据源 <property name="dataSource" ref="dataSource"/>
//注入扫描的实体类的路径 <property name="packagesToScan" value="com.demo.entity" /> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect" >${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
<!--4.配置事务管理-->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--5.注解事务 :transaction-manager="transactionManager" -->
<tx:annotation-driven />
</beans>
三、引入Spring Test 框架
//让测试运行于Spring测试环境
@RunWith(SpringJUnit4ClassRunner.class)
//Spring整合JUnit4测试时,使用注解引入多个配置文件 @ContextConfiguration(locations={ "classpath:applicationContext-core.xml" ,"classpath:applicationContext-orm.xml" }) public class UserServiceTest { @Autowired private IUserService userService; @Test public void save() { User user = new User(); user.setUserName("Guest"); user.setPassword("123"); userService.save(user); } }
浙公网安备 33010602011771号