Hibernate的session在sessionFactory.opensession()打开时获得connection,还是在transaction在数据库连接时才获的connection呢,
代码看了好几天,也没有能够找到明确的代码。
请高手指教。
谢谢
connection是对数据库的连接,是在你使裤做举用hibernate时读取配置文件中的<session-factory>时建立的,由hibernate来
管理对数据库的连接。
这是SessionFactory中定义的openSession():
public org.hibernate.classic.Session openSession() throws HibernateException;
返回经典Session的引用。
这是经典Session的定义:
public interface Session extends org.hibernate.Session
继承hibernate3中的Session。
在hibernate3中的Session接口中你可以找到如胡塌下两个方法的声明:
public Connection connection() throws HibernateException;
public Transaction beginTransaction() throws HibernateException;
第一个方法使得你可以使用jdbc的方式操作数据库,通常用来调用存储过程等
第二个是在session中获得对事务进行操作。
所以整个过程应该是: 你先建立对数据库的连接,然后使用Session对数据库进行操作。白胡碧话就是先建立连接,然后进行一系列会话。如果涉及到并发、一致性等问题,要进行事务操作的时候先打开事务,然后在执行一系列session中的方法对数据库进行操作。
当然升枝是opensession的时候得到connection,州源
transaction是用来提交事物的,但必须得在关闭session之前提交,吵迹敏也就connection关闭之前提交。