我们能否从单个数据库连接获取多个事务?
In Hibernate generally we have only Single instance of SessionFactory which internally gets the DB Connection from Connection Pool. When we get new Session from SessionFactory does it internally fetches new connection pool or it shares the Database connection across multiple Session?
Hibernate 是一个 ORM,它是 SQL 数据库和您的 POJO 之间的一个层。
连接池提供了一种存储和重用 java.sql.Connection
实例的方法,以提高速度和稳健性。
hibernate Session
是 Connection
的包装器,目的是让您无需直接编写 SQL 即可保存 POJO。
所以 hibernate Session
是 Connection
的包装器。 连接
保存在连接池中。
当您调用 SessionFactory.openSession
时,hibernate 首先从提供的连接池中获取一个 Connection
。然后它围绕该 Connection
创建一个 Session
并返回它。
当使用带有连接池的 Hibernate 时,只要 Session 需要 JDBC 连接,它就会从池中分配它。
session 完成后,其行为取决于 ConnectionReleaseMode
。对于 Hibernate 3.1,默认的 ConnectionReleaseMode
是 AFTER_TRANSACTION
(原为 ON_CLOSE),这意味着 Session
在 transaction 中将连接释放回池中
结束(提交或回滚)。