Из того, что я прочитал до сих пор, я понял, что использование транзакций будет решением проблем отложенной загрузки в 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
, внедренный с помощью автопроводки.
Типичным заголовком реализации сервиса будет:
@Service
@Transactional(readOnly=true)
public class LeerlingServiceImpl implements LeerlingService {
@Autowired
LeerlingDAO leerlingDAO;
@Autowired
LeerplanDAO leerplanDAO;
С аннотацией @Service(readOnly=false)
, если что-либо действительно сохраняется / обновляется в этом конкретном методе.
Нужно ли настраивать что-то еще, чтобы убедиться, что я могу загружать нужные ассоциации в моем Сервисе, или это обычно обрабатывается транзакциями?
Прямо сейчас я немного озадачен тем, что я должен делать на самом деле, поэтому, пожалуйста, помогите мне:)