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();
}
}

最新文章

  1. css中的定位和框模型问题
  2. HDU 2096 小明A+B --- 水题
  3. c# 中的多线程和异步
  4. (转)SqlServer数据库大型应用解决方案总结
  5. querystring,parse和stringify相互转换
  6. Scrapy开发
  7. Java 异常分类
  8. java提高篇(七)-----详解内部类
  9. 构建微服务(Building Microservices)-PDF 文档
  10. 【UML 建模】状态图介绍
  11. 面试常考---html篇
  12. symfony composer安装
  13. Hive 导入 parquet 格式数据
  14. ssm知识点总结
  15. day5 模拟用户登录
  16. jmeter创建基本的FTP测试计划
  17. 6.简单提取小红书app数据保存txt-2
  18. Expo大作战(四)--快速用expo构建一个app,expo中的关键术语
  19. mySQl数据库中不能插入中文的处理办法
  20. Web前端开发最佳实践(9):CSS代码太太乱,重复代码太多?你需要精简CSS代码

热门文章

  1. Google C++单元测试框架之宏
  2. 【js】批量判断表单中的文本框非空
  3. 跳出框架iframe的操作语句
  4. OAF_OAF增删改-修改的实现(案例)
  5. iOS9中怎样在日历App中创建一个随意时间之前開始的提醒(三)
  6. #pragma pack
  7. Python sqrt() 函数
  8. openssl之EVP系列之9---EVP_Digest系列函数的一个样例
  9. [na][win]AD域组策略wifi自动配置
  10. FZU Problem 2030 括号问题