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的声明 ...
随机推荐
- [转]解析UML建模语言中的UML图分类、 UML各种图形及作用
本文向大家介绍一下UML图分类,作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分. UML图大致可分为五类,共有九种图形. AD: 本文和大家重点讨论一下UML图分类,标准建模语言U ...
- Jenkins用HTTP Request Plugin插件进行网站的监控/加探针(运维监控)
使用的插件: [HTTP Request Plugin] 思路: 说明:只能是网站是否正常打开,而不能是这个网站业务是否正常,如果是后者,则需要写特定的接口进行请求处理. 1.通过插件,发送GET请求 ...
- subline text 常用插件
C语言 Alignment c Improved cool format doc Blocker cTags AllAutoComplete wakatime 精确统计你再 ...
- String.format("%0"+length+"d", arr)中的%0和"d"分别代表什么
public static void main(String[] args) { int a = 8; String s = String.format("%04d", a); S ...
- 判断UISrollview的滑动方向
很常用的一个功能,就记录下来了. -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { historyY = scrollVi ...
- Android内存优化13 内存泄漏常见情况4 资源泄漏
资源未关闭或释放导致内存泄露 在使用IO.File流或者Sqlite.Cursor等资源时要及时关闭.这些资源在进行读写操作时通常都使用了缓冲,如果及时不关闭,这些缓冲对象就会一直被占用而得不到释放, ...
- WinForm客户端调用 WebService时 如何启用Session
WinForm客户端调用 WebService时 如何启用Session 摘自: http://www.cnblogs.com/swtseaman/archive/2011/04/18/2020176 ...
- 工程web-inf 下文件,路径访问
直接用相对路径../即可 效果:
- dhclient 简介
dhclient 就和它名字一样,用来通过 dhcp 协议配置本机的网络接口. 使用方法就是 #dhclient ifN # ifN 就是 ifconfig 中输出的接口名称,etc. eth0,wl ...
- Rails零散知识
1. 邮箱验证VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i validates :email, pres ...