1.JDBC Transaction

      Hibernate对于JDBC事务只是做了很简单的封装,JDBC事务管理也是Hibernate的默认事务管理方式,在Hibernate的所有操作都必须在事务中完成(甚至是Query),在sessionFactory.openSession()中,Hibernate会初始华数据库的连接,同时,将AutoCommit设为关闭状态(False)。所以如果代码这样:
   session =sessionFactory.openSession();
   session.save(customer);
   session.close();
      这样对于数据库是没有任何影响的,因为AutoCommit=false,必须要Transaction.commit().
      JDBC Transaction的操作如下:
   session = sessionFactory.openSession();
   Transaction tx = session.beginTransaction();
   ...
   tx.commit();
     实际上对应的JDBC代码为:
    Connection conn = getConnection();
    conn.setAutoCommit(false);
    ....
    conn.commit();

2.JTA Transaction

   JTA事务管理是夸Session的,Hibernate的事务管理方式使得事务管理统一化,即调用形式和基于JDBC Transaction是一样的,只要简单的改写配置文件即可。  
   对于非托管性的程序,事务的使用形式很简单,只是beginTransaction()和commit或者rollback,而JTA的事务管理更加是和托管性的程序事务管理,在程序中可以无需添加任何的事务语句,所有的事务管理都放到配置文件中指定,有JTA容器统一管理。

4.悲观锁和乐观锁