本文共 6821 字,大约阅读时间需要 22 分钟。
Connection = null; PreparedStatement pstmt = null; try{ con = DriverManager.getConnection(dbUrl, username, password); // 设置手工提交事务模式 con.setAutoCommit(false); pstmt = ……; pstmt.executeUpdate(); // 提交事务 con.commit(); }catch(Exception e){ // 事务回滚 con.rollback(); ….. } finally{ ……. } |
<session-factory> …… <property name="hibernate.transaction.factory_class"> org.hibernate.transaction.JDBCTransactionFactory </property> …… </session-factory> |
Transaction tx = null; try { tx = sess.beginTransaction(); // do some work ... tx.commit(); } catch (RuntimeException e) { if (tx != null) tx.rollback(); throw e; // or display error message } finally { sess.close(); } |
<session-factory> …… <property name="hibernate.transaction.factory_class"> org.hibernate.transaction.JTATransactionFactory </property> …… </session-factory> |
// BMT(bean管理事务) idiom with getCurrentSession() try { UserTransaction tx = (UserTransaction)new InitialContext() .lookup("java:comp/UserTransaction"); tx.begin(); // Do some work on Session bound to transaction factory.getCurrentSession().load(...); factory.getCurrentSession().persist(...); tx.commit(); } catch (RuntimeException e) { tx.rollback(); throw e; // or display error message } |
// CMT idiom Session sess = factory.getCurrentSession(); // do some work ... |
<session-factory> <!-- 设置JDBC的隔离级别 --> <property name="hibernate.connection.isolation">2</property> </session-factory> |
package org.qiujy.domain.versionchecking; import java.util.Date; public class Product implements java.io.Serializable{ private Long id ; /** 版本号 */ private int version; private String name; //产品名 private String description; //描述--简介 private Double unitCost; //单价 private Date pubTime; //生产日期 public Product(){} //以下为getter()和setter()方法 } |
package org.qiujy.domain.versionchecking; import java.util.Date; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.qiujy.common.HibernateSessionFactory; public class TestVersionChecking { public static void main(String[] args) { Product prod = new Product(); prod.setName("IBM thinkPad T60"); prod.setUnitCost(new Double(26000.00)); prod.setDescription("笔记本电脑"); prod.setPubTime(new Date()); //test start....... Session session = HibernateSessionFactory.getSession(); Transaction tx =null; try{ tx = session.beginTransaction(); session.save(prod); tx.commit(); }catch(HibernateException e){ if(tx != null){ tx.rollback(); } e.printStackTrace(); }finally{ HibernateSessionFactory.closeSession(); } //进行更新 测试.. prod.setDescription("新款的"); Session session2 = HibernateSessionFactory.getSession(); Transaction tx2 =null; try{ tx2 = session2.beginTransaction(); session2.update(prod); tx2.commit(); }catch(HibernateException e){ if(tx2 != null){ tx2.rollback(); } e.printStackTrace(); }finally{ HibernateSessionFactory.closeSession(); } } } |
insert into products (version, name, description, unitCost, pubTime) values(?, ?, ?, ?, ?) |
update products set version=?, name=?, description=?, unitCost=?, pubTime=? where id=? and version=? |
转载地址:http://dnaji.baihongyu.com/