gpt4 book ai didi

java - Spring事务和 hibernate : lazy initialization

转载 作者:行者123 更新时间:2023-12-02 08:28:26 27 4
gpt4 key购买 nike

根据我到目前为止所读到的内容,我了解到使用事务将是解决 hibernate 延迟加载问题的方法。 session 将在服务层的整个事务期间可用,无需进一步等待。

那么也许我错误地配置了我的事务管理?对于 Spring 和 Hibernate,我实际上是一个新手,但也许你们可以帮助我。

我的配置:

<bean class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
id="sessionFactory">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- Hibernate Template bean that will be assigned to DAOs. -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

<!--
Transaction manager for a single Hibernate SessionFactory (alternative
to JTA)
-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

我的 DAO 实现只需使用 Autowiring 注入(inject)一个 @Repository 注释和一个 Hibernate-template bean。

服务实现的典型 header 是:

@Service
@Transactional(readOnly=true)
public class LeerlingServiceImpl implements LeerlingService {

@Autowired
LeerlingDAO leerlingDAO;
@Autowired
LeerplanDAO leerplanDAO;

如果在该特定方法中实际保存/更新了任何内容,则使用 @Service(readOnly=false) 注释。

我是否需要配置其他内容以确保我可以在我的服务中加载正确的关联,或者这通常由事务处理?

现在我只是有点困惑我到底应该做什么,所以请帮助我:)

最佳答案

延迟加载问题和事务之间并没有真正的关联。但这是另一个故事了:)除了访问 Bean 中的 session 之外,您一切都做得很好。不知道你将如何做到这一点。标准解决方案(在 spring 2.x 中,不确定 3.x,还没有看过)是使用 HibernateDaoSupport 作为您要访问 session 的类的基类。但就我个人而言,这对我来说看起来有点狡猾,因为增加了对 Spring 特定类的依赖。更好的方法是将 session 注入(inject)到您的 bean 中。为此,您需要声明您的 session bean,其定义类似于:

<bean name="hibernateSession" class="org.springframework.orm.hibernate3.SessionFactoryUtils" factory-method="getSession"
scope="prototype">
<constructor-arg index="0" ref="hibernateSessionFactory"/>
<constructor-arg index="1" value="false"/>
<aop:scoped-proxy/>
</bean>

然后就可以使用它了。

详细信息如下:

http://stas-blogspot.blogspot.com/2009/10/hibernate-spring-in-standalone.html

关于java - Spring事务和 hibernate : lazy initialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3992335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com