java - 我们可以为单个数据库连接设置多个并行事务吗?

标签 java sql database hibernate

<分区>

我们能否从单个数据库连接获取多个事务

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 SessionConnection 的包装器,目的是让您无需直接编写 SQL 即可保存 POJO。

所以 hibernate SessionConnection 的包装器。 连接保存在连接池中。

当您调用 SessionFactory.openSession 时,hibernate 首先从提供的连接池中获取一个 Connection。然后它围绕该 Connection 创建一个 Session 并返回它。

当使用带有连接池的 Hibernate 时,只要 Session 需要 JDBC 连接,它就会从池中分配它。

session 完成后,其行为取决于 ConnectionReleaseMode。对于 Hibernate 3.1,默认的 ConnectionReleaseModeAFTER_TRANSACTION(原为 ON_CLOSE),这意味着 Sessiontransaction 中将连接释放回池中 结束(提交或回滚)。

关于java - 我们可以为单个数据库连接设置多个并行事务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24737512/

相关文章:

java - ArrayList<X> 是聚合还是组合?

java - 与移动障碍物的碰撞响应(2D)

sql - #1452 sql 错误意味着我无法添加外键

mysql - SQL 将所有具有不同后缀的相似项目分组

mysql - 避免包含 group by 的嵌套子查询

mysql - MySQL 表中的列是否有唯一且正常的索引?

Linux (Fedora) 无法在终端中运行 psql 命令 - 角色不存在

java - 对于不同类型的任务使用不同的线程池是否值得花费这些开销?

java - Java 中的泛型继承

c++ - QTreeWidgetItem的选择