从我到目前为止所读到的内容中,我了解到使用事务将是解决 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 实现只需要一个@Repository
注解和一个Hibernate-template
使用自动装配注入的 bean。
服务实现的典型标头是:
@Service
@Transactional(readOnly=true)
public class LeerlingServiceImpl implements LeerlingService {
@Autowired
LeerlingDAO leerlingDAO;
@Autowired
LeerplanDAO leerplanDAO;
@Service(readOnly=false)
如果在该特定方法中实际保存/更新了任何内容,则使用注释。
我是否需要配置其他内容以确保我可以在我的服务中加载正确的关联,或者这通常由事务处理?
现在我对我应该做什么有点困惑,所以请帮助我:)