Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于单个数据库连接,我们可以有多个并行事务吗?_Java_Sql_Database_Hibernate - Fatal编程技术网

Java 对于单个数据库连接,我们可以有多个并行事务吗?

Java 对于单个数据库连接,我们可以有多个并行事务吗?,java,sql,database,hibernate,Java,Sql,Database,Hibernate,我们能否从单个数据库连接中获得多个事务 在Hibernate中,通常只有一个SessionFactory实例,它从连接池内部获取数据库连接。当我们从会话工厂获取新的会话时,它是在内部获取新的连接池还是跨多个会话共享数据库连接 Hibernate是一种ORM,它是SQL数据库和POJO之间的一层 连接池提供了一种存储和重用java.sql.connection实例的方法,以提高速度和健壮性 hibernate会话是连接的包装器,允许您保存POJO而无需直接编写SQL 因此,hibernate会话是

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

Hibernate中,通常只有一个SessionFactory实例,它从连接池内部获取数据库连接。当我们从会话工厂获取新的会话时,它是在内部获取新的连接池还是跨多个会话共享数据库连接


Hibernate是一种ORM,它是SQL数据库和POJO之间的一层

连接池提供了一种存储和重用
java.sql.connection
实例的方法,以提高速度和健壮性

hibernate
会话
连接
的包装器,允许您保存POJO而无需直接编写SQL

因此,hibernate
会话
是连接的包装器<代码>连接保存在连接池中

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

在将Hibernate与连接池一起使用时,每当会话需要JDBC连接时,它都会从连接池中进行分配


会话完成后,其行为取决于
ConnectionReleaseMode
。对于Hibernate 3.1,默认的
ConnectionReleaseMode
模式是
AFTER\u TRANSACTION
(was ON\u CLOSE),这意味着
会话在
TRANSACTION
结束时将连接释放回池(提交或回滚)。

会话工厂不获取数据库连接。SessionFactory是线程安全的,加载hibernate.cfg.xml文件,线程可以并发访问该文件,并为单个数据库请求会话和编译映射的不可变缓存。构建SessionFactory时,将映射所有实体类

您可以从SessionFactory获取任意数量的会话实例。会话不是线程安全的,即不能在线程之间共享会话。会话以惰性方式获取数据库连接。 beginTransaction()仅在需要时(即,仅在事务启动时)才会导致加载给定会话的连接