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-使用事务的更多相关文章

  1. Hibernate中事务的隔离级别设置

    Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下

  2. (转载)Hibernate的事务管理

    Hibernate的事务管理 事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰.作为一名软件设计 ...

  3. atitit.spring hibernate的事务机制 spring不能保存对象的解决

    atitit.spring hibernate的事务机制 spring不能保存对象的解决 sessionFactory.openSession() 不能..log黑头马sql语言.. sessionF ...

  4. Hibernate学习笔记(三)—— Hibernate的事务控制

    Hibernate是对JDBC的轻量级封装,其主要功能是操作数据库.在操作数据库过程中,经常会遇到事务处理的问题,接下来就来介绍Hibernate中的事务管理. 在学习Hibernate中的事务处理之 ...

  5. Hibernate的事务管理

    Hibernate的事务管理 事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰.作为一名软件设计 ...

  6. JavaWeb_(Hibernate框架)Hibernate中事务

    Hibernate中事务 事务的性质 事物的隔离级别 配置事务的隔离级别 事务的性质 原子性:原子,不可再分,一个操作不能分为更小的操作,要么全都执行,要么全不执行. 一致性:事务在完成时,必须使得所 ...

  7. 七、hibernate的事务使用

    hibernate中事务隔离级别 1:读未提交 2:读已提交 4:可重复读 8:可串行化 hibernate事务使用 在核心配置文件中配置事务隔离级别 <property name=" ...

  8. 事务种类jdbc,Hibernate,JTA事务

    JDBC事务 String URL="jdbc:sqlserver://localhost:1433;databaseName=test2"; String USER=" ...

  9. Hibernate中事务声明

    Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...

  10. 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】

    一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...

随机推荐

  1. Total Commander:文件管理工具,共享软件

    http://xbeta.info/tc/ Total Commander V8.0:文件管理工具,共享软件,适用于Windows® 95/98/ME/NT/2000/XP/Vista/7 和 Win ...

  2. 谈谈easyui datagrid 的数据加载(转)

    这篇文章只谈jQuery easyui datagrid 的数据加载,因为这也是大家谈论最多的内容.其实easyui datagrid加载数据只有两种方式:一种是ajax加载目标url返回的json数 ...

  3. SQL SERVER SELECT语句中加锁选项的详细说明 [转]

    SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能.用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实现预期的效果. 本文介绍了S ...

  4. Ubuntu 10.04 安装流程

    ubuntu 10.04 安装流程   需安装libxrender-dev才能跑html5           来自为知笔记(Wiz)

  5. Python atan() 函数

    描述 atan() 返回x的反正切弧度值. 语法 以下是 atan() 方法的语法: import math math.atan(x) 注意:atan()是不能直接访问的,需要导入 math 模块,然 ...

  6. git配置gitignore

    一.背景                                                                                                 ...

  7. Unix lrzsz命令 上传本地文件到服务器 / 发送文件到客户端

    第三方教程:https://www.jb51.net/article/73690.htm 安装命令: $ yum install lrzsz 本地上传文件到服务器,如果是xshell,直接拖拽文件进入 ...

  8. mysql (已解决)Access denied for user 'root'@'localhost' (using password: NO)

    找到mysql中的my.ini,在最后一行加入 skip-grant-tables 在“管理工具”-”服务” 中重启mysql 解决问题

  9. mac下设置mongodb开机启动方法

    Mac OS 的开机启动方式 launchd 是 Mac OS 下用于初始化系统环境的关键进程,它是内核装载成功之后在OS环境下启动的第一个进程.其实它的作用就是我们平时说的守护进程,简单来说,用户守 ...

  10. ASP.NET的一些小问题

    如何获取网站当前绝对路径? string path = HttpRuntime.AppDomainAppVirtualPath; 注:该路径结尾不含'/'.