【发布时间】:2013-01-20 12:07:28
【问题描述】:
我是 Hibernate 的新手,我有一些关于事务分界的问题(我已经在 Stack Overflow、Hibernate 文档中进行了搜索……但我没有找到答案)。
- 首先,我使用 Maven Hibernate 工具插件生成 Hibernate Bean 和 DAOS。
- 在生成过程之后,我将数据库访问 jar 包含到我的 Java 项目中。
简单查询可以正常工作,但是当我执行具有多个连接的复杂查询时,不会获取集合(延迟获取)并且当我尝试调用相应的时
获取数据的方法,我得到一个惰性初始化异常,因为我的会话上下文是:线程并且会话已通过事务提交关闭。
我需要会话更长的时间才能显式地获取集合 一个 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) 的更长会话?
【问题讨论】:
-
鉴于您两次回答了自己的问题,您应该阅读 Stackoverflow 常见问题解答:stackoverflow.com/faq
标签: hibernate jdbc transactions