これまで読んだことから、トランザクションを使用することが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)
その特定のメソッドで実際に保存/更新されたものがある場合は、注釈を付けます。
サービスに正しい関連付けをロードできるようにするために何か他のものを構成する必要がありますか、それともこれは通常トランザクションによって処理されますか?
今、私は実際に何をすべきか少し混乱しているので、助けてください:)