spring和hibernate整合,事务管理
一、spring和hibernate整合开发步骤
1 引入jar文件,用户libarary列表如下
//spring_core
spring3..9core\commons-logging-1.2.jar
spring3..9core\spring-beans-3.2..RELEASE.jar
spring3..9core\spring-context-3.2..RELEASE.jar
spring3..9core\spring-core-3.2..RELEASE.jar
spring3..9core\spring-expression-3.2..RELEASE.jar //hibernate core
hibernate3.6core\antlr-2.7..jar
hibernate3.6core\commons-collections-3.1.jar
hibernate3.6core\dom4j-1.6..jar
hibernate3.6core\hibernate3.jar
hibernate3.6core\hibernate-jpa-2.0-api-1.0..Final.jar
hibernate3.6core\javassist-3.12..GA.jar
hibernate3.6core\jta-1.1.jar
hibernate3.6core\slf4j-api-1.6..jar
hibernate3.6core\slf4j-nop-1.7..jar //DB_connector
DB-connector\c3p0-0.9.1.2.jar
DB-connector\mysql-connector-java-5.1.-bin.jar
DB-connector\spring-jdbc-3.2..RELEASE.jar //AOP
springAOP\aopalliance.jar
springAOP\aspectjrt.jar
springAOP\aspectjweaver.jar
springAOP\spring-aop-3.2..RELEASE.jar //spring_ORM
spring-ORM\spring-orm-3.2..RELEASE.jar
spring-ORM\spring-tx-3.2..RELEASE.jar
2 Entity/Dao/Service类代码如下
//entity/Employee.java
public class Employee {
private int id;
private String ename;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
} //dao/EmployeeDao.java
public class EmployeeDao {
private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
} public void saveEmp(Employee emp){
sessionFactory.getCurrentSession().save(emp);
} } //service/EmployeeService.java
public class EmployeeService {
private EmployeeDao employeeDao; public void setEmployeeDao(EmployeeDao employeeDao) {
this.employeeDao = employeeDao;
} public void saveEmp(Employee emp){
employeeDao.saveEmp(emp);
} }
3 类对象和数据表关系映射配置,Employee.hbm.xml
<?xml version="1.0"?>
<!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.huitong.entity"> <class name="Employee" table="employee">
<id name="id" column="id">
<generator class="native"></generator>
</id> <property name="ename" column="ename"></property>
</class> </hibernate-mapping>
4 Spring和hibernate/事务配置都放在一个配置文件中bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 配置dataSource -->
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///day26?useSSL=true"></property>
<property name="user" value="root"></property>
<property name="password" value=""></property>
<property name="initialPoolSize" value=""></property>
<property name="maxPoolSize" value=""></property>
<property name="maxStatements" value=""></property>
<property name="acquireIncrement" value=""></property>
</bean> <!-- 配置sessionFactory -->
<bean id="sessionFac" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 2.1 配置数据源 -->
<property name="dataSource" ref="c3p0DataSource"></property> <!-- 2.2 数据库其他配置 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property> <!-- 2.3 加载映射文件 -->
<property name="mappingLocations">
<list>
<value>classpath:com/huitong/entity/*.hbm.xml</value>
</list>
</property>
</bean> <!-- 3 配置dao/service/action类 -->
<bean id="employeeDao" class="com.huitong.dao.EmployeeDao">
<property name="sessionFactory" ref="sessionFac"></property>
</bean> <bean id="employeeService" class="com.huitong.service.EmployeeService">
<property name="employeeDao" ref="employeeDao"></property>
</bean> <!-- 4 事务配置 -->
<!-- 4.1 transaction manager class config -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFac"></property>
</bean> <!-- 4.2 transaction advice config -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="query*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice> <!-- 4.3 AOP config -->
<aop:config>
<aop:pointcut expression="execution(* com.huitong.service.*.save*(..))" id="pt"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
</aop:config> </beans>
5 至此完成开发,简单测试如下
public void fun1(){
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
EmployeeService employeeService = (EmployeeService) ac.getBean("employeeService");
System.out.println(employeeService); // spring ok?
Employee employee = new Employee();
employee.setEname("good");
employeeService.saveEmp(employee); //hibernate ok?
}
二、事务配置
1) 声明事务管理器类
2)事务增强
3)AOP配置拦截点
spring和hibernate整合,事务管理的更多相关文章
- spring与hibernate整合事务管理的理解
在谈Spring事务管理之前我们想一下在我们不用Spring的时候,在Hibernate中我们是怎么进行数据操作的.在Hibernate中我们每次进行一个操作的的时候我们都是要先开启事务,然后进行数据 ...
- Spring+SpringMVC+Hibernate小案例(实现Spring对Hibernate的事务管理)
原文地址:https://blog.csdn.net/jiegegeaa1/article/details/81975286 一.工作环境 编辑器用的是MyEclipse,用Mysql数据库,mave ...
- Spring 与 mybatis整合---事务管理
MyBatis与Spring整合前后事务管理有所区别 整合前:通过 session = sessionFactory.openSession(true); //或者是false 设置事务是否自动提交: ...
- Spring第九篇【Spring与Hibernate整合】
前言 前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合 Spring和Hibernate整合的关键点: SessionFact ...
- Spring与Hibernate整合,实现Hibernate事务管理
1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar ...
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...
- Spring structs2 hibernate 整合(ssh)
ssh项目jar包 项目内容: 1. 加入 Spring 1). 加入 jar 包2). 配置 web.xml 文件3). 加入 Spring 的配置文件.(application.xml) 2. 加 ...
- SSH框架之Spring+Struts2+Hibernate整合篇
回顾 -Hibernate框架 ORM: 对象关系映射.把数据库表和JavaBean通过映射的配置文件映射起来, 操作JavaBean对象,通过映射的配置文件生成SQL语句,自动执行.操作数据库. 1 ...
- Java进阶知识25 Spring与Hibernate整合到一起
1.概述 1.1.Spring与Hibernate整合关键点 1) Hibernate的SessionFactory对象交给Spring创建. 2) hibernate事务交给spring的声明 ...
随机推荐
- Hiho---欧拉图
欧拉路·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho最近在玩一个解密类的游戏,他们需要控制角色在一片原始丛林里面探险,收集道具,并找到最后的宝藏.现 ...
- CentOS 5/6安装后的必备设置(转)
说明:转自各大优化方案,相当于是一个大杂烩,后续会搞成是一个Shell脚本简化操作. 1.修改ip地址.网关.主机名.DNS等 (这个操作可以使用Setup工具进行配置,但不建议使用,封装太多,没有配 ...
- [Android实例] 推荐给你们一个好用的ListView、RecyclerView适配器
https://github.com/vihuela/RecyclerViewHelpper 如果用过RecyclerView的人都知道,高度不会包裹,然后写法好像也不是很简洁,甚至点击事件不好设 置 ...
- [Android Pro] 获取手机已经安装的应用 和 获取当前正在运行的所有进程(一个uid对应多个pid)
1: 获取PackageManager 获取全部静态已安装的应用: PackageManager pm = getPackageManager(); List<PackageInfo> i ...
- [转]ssis cannot retrieve the column code page info from the ole db provider
本文转自:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/dc1a61f2-1ab8-4ed3-b85c-db6481800b50/er ...
- Apache的Order Allow,Deny详解
Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权. 所以,最常用的是: O ...
- http://blog.sina.com.cn/s/blog_4a5dbd380101f031.html
http://blog.sina.com.cn/s/blog_4a5dbd380101f031.html mvn clean install
- java匿名内部类之RocketMQ中的应用
匿名内部类在spring中没怎么见用,在RocketMQ中有大量的应用. 确实可以提高开发效率.这可能代表两种写代码的态度吧. 匿名内部类简单来说就是直接在函数中实现接口方法,不需要声明一个接口实现类 ...
- (六)SSO之CAS框架扩展 改动CAS源代码实现与ESS动态password验证对接
题记: 偶尔的偶尔我们会听到这个站点的数据泄露了,那个站点的用户数据泄露了.让用户又一次改动登录password,所以,对于用户数据安全性越发的引起我们的重视了,尤其是一些保密性要求高的站点.更须要添 ...
- Maven Dependencies 不见了
解决办法: 1. 选中项目 --> 右键 --> Maven --> Disable Maven Nature 此时,右键菜单中将隐藏[Maven]菜单选项 2. 选中项目 --&g ...