Hibernate-使用事务
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
User u1 = new User();
u1.setName("测试11111"); User u2 = new User();
u2.setName("测试222222"); new SaveService().add(u1, u2); System.out.println("ok");
}
配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatetransaction</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 将session绑定到当前的线程中,这样在同一个线程中就可以使用同一个session,进行事务操作,要是用全称 -->
<property name="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property> <mapping resource="com/gordon/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
package com.gordon.service; import org.hibernate.Session;
import org.hibernate.Transaction; import com.gordon.dao.SaveDao;
import com.gordon.domain.User;
import com.gordon.utils.HibernateUtil; public class SaveService { public void add(User u1, User u2) { SaveDao saveDao = new SaveDao(); // 从当前线程中获取session
Session session = HibernateUtil.getCurrentSession();
//开启这个session的事务
Transaction tr = session.beginTransaction(); try {
saveDao.add1(u1); int i = 100/0; saveDao.add2(u2); tr.commit();
} catch (Exception e) {
tr.rollback();
e.printStackTrace();
} // 不需要关闭session,会自动关闭 } }
package com.gordon.dao; import org.hibernate.Session; import com.gordon.domain.User;
import com.gordon.utils.HibernateUtil; public class SaveDao { public void add1(User u) {
Session session = HibernateUtil.getCurrentSession();
session.save(u);
} public void add2(User u) {
Session session = HibernateUtil.getCurrentSession();
session.save(u);
} }
package com.gordon.utils; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtil {
private static final Configuration CONFIGURATION;
private static final SessionFactory SESSIONFACTORY; static {
CONFIGURATION = new Configuration().configure();
SESSIONFACTORY = CONFIGURATION.buildSessionFactory();
}; public static Session getSession() {
return SESSIONFACTORY.openSession();
} public static Session getCurrentSession() {
return SESSIONFACTORY.getCurrentSession();
}
}
Hibernate-使用事务的更多相关文章
- Hibernate中事务的隔离级别设置
Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下
- (转载)Hibernate的事务管理
Hibernate的事务管理 事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰.作为一名软件设计 ...
- atitit.spring hibernate的事务机制 spring不能保存对象的解决
atitit.spring hibernate的事务机制 spring不能保存对象的解决 sessionFactory.openSession() 不能..log黑头马sql语言.. sessionF ...
- Hibernate学习笔记(三)—— Hibernate的事务控制
Hibernate是对JDBC的轻量级封装,其主要功能是操作数据库.在操作数据库过程中,经常会遇到事务处理的问题,接下来就来介绍Hibernate中的事务管理. 在学习Hibernate中的事务处理之 ...
- Hibernate的事务管理
Hibernate的事务管理 事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰.作为一名软件设计 ...
- JavaWeb_(Hibernate框架)Hibernate中事务
Hibernate中事务 事务的性质 事物的隔离级别 配置事务的隔离级别 事务的性质 原子性:原子,不可再分,一个操作不能分为更小的操作,要么全都执行,要么全不执行. 一致性:事务在完成时,必须使得所 ...
- 七、hibernate的事务使用
hibernate中事务隔离级别 1:读未提交 2:读已提交 4:可重复读 8:可串行化 hibernate事务使用 在核心配置文件中配置事务隔离级别 <property name=" ...
- 事务种类jdbc,Hibernate,JTA事务
JDBC事务 String URL="jdbc:sqlserver://localhost:1433;databaseName=test2"; String USER=" ...
- Hibernate中事务声明
Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...
- 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】
一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...
随机推荐
- GFW的前世今生,一部GFW之父方滨兴的发家史
http://whu.myubbs.com/thread-96390-1-1.html方滨兴(1960年7月17日-),男,中国共chan党党员,中国工程院院士,全国人大代表,中国科学院信息工程研究所 ...
- 奇葩属性:layout_weight 的解释及使用
在Android的控件布局中,有一个奇葩的 layout_weight 属性,定义如下: layout_weight : 用于指定剩余空闲空间的分割比例.用法: 01 <LinearLayout ...
- GL_总账会计科目追寻SLA及子模组
相信做总账的学友们,一般很多时间都会花费在查询日记账的来源,因为R12多了一个SLA模组,又有些增加了追溯日记账的难度,个人整理了一下 11i过账方式: 子模组-> 总账 (Post Journ ...
- Linux时间子系统(十二) periodic tick
一.tick device概念介绍 1.数据结构 在内核中,使用struct tick_device来抽象系统中的tick设备,如下: struct tick_device { struct ...
- Objective-C学习笔记(十八)——对象方法和类方法的声明,定义及调用
在程序设计中,函数的使用无疑大大简化了代码的编写.提高代码执行的效率.降低反复代码. 所以如今我们来具体研究一下方法. 本样例还是以People类为例. (一)代码一: (1)先在People.h中声 ...
- WeUI中的Css详解
WeUI是微信Web服务开发的UI套件, 目前包含12个模块 (Button, Cell, Toast, Dialog, Progress, Msg, Article, ActionSheet, ...
- unity5 静态和动态cubmap
一,静态cubemap: asserts窗口 右键->Create->Legacy->Cubemap,新建一个cubemap,命名为cubeMap,然后为其各面指定贴图,如图: 需要 ...
- Windows 上安装docker
Windows 上安装docker //(第一种)下载boot2docker https://github.com/boot2docker/windows-installer/releases //( ...
- Java:HttpClient篇,Cookie概述,及其在HttpClient4.2中的应用
1. Cookie 概述 Cookie是什么? Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递.Cookie 包含每次用户访问站点时 Web 应用程序都可以读取 ...
- Linux下修改时间时区的方法介绍
点评:在Linux中,用于时钟查看和设置的命令主要有date.hwclock和clock.其中,clock和 hwclock用法相近,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件 ...