私は、StrutsをIOCのフロントエンドとSpringとして、そしてhibernate + c3p0をデータソースプーリングとして使用しています。 私は、永続的な層のためにannotationsessionfactory beanと@Transactionアノテーションを使用しています。 これはすべて豆を使用して管理されています。Struts + Spring + Spring管理トランザクション+ hibernate
でも、永続化レイヤメソッドで@transactionalアノテーションを使用していない場合でも、データが保存されます。
例:
public interface CollegeHibernate {
CollegeWTO saveCollege(CollegeWTO collegeWTO);
}
public class CollegeHibernateImpl extends HibernateTemplate implements CollegeHibernate{
public CollegeWTO saveCollege(CollegeWTO collegeWTO) {
College college = CollegeHelper.CollegeWTO_to_Model(new College(), collegeWTO);
}
}
Beanが
<bean id="collegeHibernate" class="com.velos.p1b.persistence.college.impl.CollegeHibernateImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
セッションファクトリは、春の注釈の工場で、 トランザクションは次のように管理されています。
<tx:annotation-driven transaction-manager="transactionManager" />
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" read-only="true" rollback-for="java.lang.Throwable" />
</tx:attributes>
</tx:advice>
このメソッドはデータを保存しますが、トランザクション化はしません。私によれば、それは例外を通らなければならない。私はOracle 11gとj-boss 4.2サーバーを使用しています。私が考えているのは、私の取引が管理されていないということです。いずれの例も高く評価されます。