我是 Hibernate 的新手,我有一些关于事务分界的问题(我已经在 Stack Overflow、Hibernate 文档中进行了搜索,但我还没有找到答案)。
- 首先,我使用 Maven Hibernate Tools Plugin 生成 Hibernate Beans 和 DAOS。
- 在生成过程之后,我将我的数据库访问 jar 包含到我的 Java 项目中。
简单查询工作正常,但是当我执行具有多个连接的复杂查询时,不会获取集合(延迟获取)并且当我尝试调用相应的
get 方法来检索数据,我得到一个惰性初始化异常,因为我的会话上下文是:线程并且会话已通过事务提交关闭。
我需要会话寿命更长,以便使用 get 方法显式获取集合。
我的休眠配置文件是:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306 /mydatabase</property>
<property name="hibernate.connection.username">user</property>
<property name="hibernate.connection.password">1234</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.use_sql_comments">true</property>
</session-factory>
在这种情况下,是否有必要使用 JTA 事务(我不使用 Web 服务器),或者是否可以在不显式初始化惰性集合的情况下实现不附加到事务范围(JDBC)的更长会话?