Hibernate为什么要开启一个事务(session.beginTransaction();)才能插入数据?
感觉只要执行commit应该就能将数据存入了,但是不开启就会出错!
在数据库中在关闭自动提交的情况下,不是只要执行一个commit 就能将数据放进数据库吗?
为什么Hibernate还要有个session.beginTransaction(),在Hibernate中如果我不想使用事务又怎么办?
执行session.beginTransaction(); Hibernate内部是什么原理啊

解决方案 »

  1.   

    hibernate中实体类对象有三种状态,瞬态(transient)、持久态(persistent)、托管态(detached)
    其中persistent状态下在内存中和数据库中都有其相应记录,并且该状态纳入session的管理,所以你要让一个瞬态对象变成持久态当然要开启事务(session)了
      

  2.   

    事务的作用是对你提交的东西进行错误或成功的处理!多的时候都处理,如果有一条没有通过则都不通过!Hibernate其实原理是非常简单的.
    我们知道如果用java连接数据库我们首先想到的就是JDBC,那么hibernate是什么呢.
    hibernate可以理解为是一个中间件它负责把java程序的sql语句接收过来发送到数据库,
    而数据库返回来的信息hibernate接收之后直接生成一个对象传给java.
    什么??对象是什么?做什么用的?
    java利用对象才可以有效的进行远程的数据传递.
    = =java就是一个面向对象的语言啊.这个地方需要慢慢体会了.
      

  3.   

    hibernate默认是手动提交事务的,而connection是默认是自动提交事务的
      

  4.   

    如果不想使用事务:在hibernate.cfg.xml中增加属性connection.autocommit='true' 就可以hibernate主要优点就是引入了事务管理,如果楼主想自动提交``还不如使用jdbc引入事务的好处,我给楼主举个小例子:在一次保存数据中要涉及到多个表,使用事务,如果有的表保存失败则回滚,几个表中数据都没添加如果改成自动提交,就会出现有的表保存了 有的没保存。
      

  5.   

    那就是说,如果你要进行save操作,Hibernate必须让你开启事务,如果不开启就会出异常。。
      

  6.   


    进行save操作,不开启事务,不会出现异常,能正常操作, 只是你的操作没有纳入事务管理了 不能回滚
      

  7.   

    进行save操作,不开启事务,不会出现异常,能正常操作,
    1楼说了一些机制至于hibernate还有什么更多功能,我也还在学习中。