hibernate课程 初探单表映射2-4 transaction简介
2018-01-03 07:46
369 查看
1 hibernate是非自动提交。如果transaction不写的话,会只创建表结构而不插入语句。
如果不写transaction而想实现插入的功能的话,需要重写session的dowork方法(记得flush)。
2 demo:
package hibernate_001;
import java.sql.Array; import java.sql.Blob; import java.sql.CallableStatement; import java.sql.Clob; import java.sql.DatabaseMetaData; import java.sql.NClob; import java.sql.PreparedStatement; import java.sql.SQLClientInfoException; import java.sql.SQLException; import java.sql.SQLWarning; import java.sql.SQLXML; import java.sql.Savepoint; import java.sql.Statement; import java.sql.Struct; import java.util.Date; import java.util.Map; import java.util.Properties; import java.util.TimeZone; import java.util.concurrent.Executor;
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.jdbc.Work; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test;
import com.ddwei.student.Student; import com.mysql.jdbc.Connection; import com.mysql.jdbc.ExceptionInterceptor; import com.mysql.jdbc.Extension; import com.mysql.jdbc.MySQLConnection; import com.mysql.jdbc.log.Log;
public class StudentTest { private SessionFactory sessionFactory; private Session session; private Transaction trasaction; @Test public void testSaveStudent(){ Student student =new Student(3,"周恩来","男",new Date(),"绍兴");//创建学生对象 session.save(student);//会话保存学生对象进入数据库 } @Before public void init(){ //1 创建配置对象 Configuration config = new Configuration().configure(); //2 创建服务对象 ServiceRegistry serviceRe = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //3 创建会话工厂 sessionFactory = config.buildSessionFactory(serviceRe); //4 打开会话 session = sessionFactory.openSession(); //5 创建事务 // trasaction = session.beginTransaction(); } @After public void destroy(){ // trasaction.commit(); session.doWork(new Work() { @Override public void execute(java.sql.Connection arg0) throws SQLException { // TODO Auto-generated method stub arg0.setAutoCommit(true); } }); session.flush(); session.close(); sessionFactory.close(); }
}
如果不写transaction而想实现插入的功能的话,需要重写session的dowork方法(记得flush)。
2 demo:
package hibernate_001;
import java.sql.Array; import java.sql.Blob; import java.sql.CallableStatement; import java.sql.Clob; import java.sql.DatabaseMetaData; import java.sql.NClob; import java.sql.PreparedStatement; import java.sql.SQLClientInfoException; import java.sql.SQLException; import java.sql.SQLWarning; import java.sql.SQLXML; import java.sql.Savepoint; import java.sql.Statement; import java.sql.Struct; import java.util.Date; import java.util.Map; import java.util.Properties; import java.util.TimeZone; import java.util.concurrent.Executor;
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.jdbc.Work; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test;
import com.ddwei.student.Student; import com.mysql.jdbc.Connection; import com.mysql.jdbc.ExceptionInterceptor; import com.mysql.jdbc.Extension; import com.mysql.jdbc.MySQLConnection; import com.mysql.jdbc.log.Log;
public class StudentTest { private SessionFactory sessionFactory; private Session session; private Transaction trasaction; @Test public void testSaveStudent(){ Student student =new Student(3,"周恩来","男",new Date(),"绍兴");//创建学生对象 session.save(student);//会话保存学生对象进入数据库 } @Before public void init(){ //1 创建配置对象 Configuration config = new Configuration().configure(); //2 创建服务对象 ServiceRegistry serviceRe = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry(); //3 创建会话工厂 sessionFactory = config.buildSessionFactory(serviceRe); //4 打开会话 session = sessionFactory.openSession(); //5 创建事务 // trasaction = session.beginTransaction(); } @After public void destroy(){ // trasaction.commit(); session.doWork(new Work() { @Override public void execute(java.sql.Connection arg0) throws SQLException { // TODO Auto-generated method stub arg0.setAutoCommit(true); } }); session.flush(); session.close(); sessionFactory.close(); }
}
相关文章推荐
- hibernate课程 初探单表映射3-5 hibernate增删改查
- hibernate课程 初探一对多映射2-2 Myeclipse进行hibernate基本配置
- hibernate课程 初探单表映射2-1 hibernate进阶 本章简介
- hibernate课程 初探单表映射1-3 hibernate简介
- hibernate课程 初探单表映射1-11 通过hibernate API访问编写第一个小例子
- hibernate课程 初探单表映射1-5 hibernate第一个demo
- hibernate课程 初探单表映射4-1 课程总结
- hibernate课程 初探一对多映射2-3 创建hibernateUtil工具类
- hibernate课程 初探单表映射2-2 hibernate常用配置
- hibernate课程 初探一对多映射1-1 课程简介
- hibernate课程 初探单表映射1-6 hibernate项目建立以及导入jar包
- hibernate课程 初探单表映射2-3 session简介
- hibernate课程 初探单表映射2-6 session详解(下)
- hibernate课程 初探单表映射1-7 hibernate配置文件新建
- hibernate课程 初探一对多映射2-4 Mysql创建数据库表
- hibernate课程 初探单表映射1-1 第一章
- hibernate课程 初探单表映射3-1 单一主键
- hibernate课程 初探单表映射3-2 基本类型
- hibernate课程 初探单表映射1-2 ORM定义
- hibernate课程 初探单表映射2-7 hbm配置文件常用设置