Struts + Spring + Spring управляемая транзакция + Hibernate - PullRequest
0 голосов
/ 18 февраля 2012

Я использую Struts в качестве frontEnd и Spring для IOC и hibernate + c3p0 в качестве пула источников данных.Я использую bean-компонент annotationsessionfactory и аннотацию @Transaction для своего постоянного слоя.все это управляется с помощью Spring Beans.

, но мои данные сохраняются также, если я не использую аннотацию @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 is

<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>

Этот метод сохраняет данные, но я вообще не делаю их транзакционными.По-моему, это должно происходить через исключение.Я использую оракул 11g и сервер j-boss 4.2.Я думаю, что моей транзакцией не управляют.Любой пример приветствуется.

1 Ответ

0 голосов
/ 20 февраля 2012

HibernateTemplate разрешает нетранзакционный доступ к данным (для режима автоматической фиксации), создает новый сеанс (если trueCreate имеет значение true) и закрывает их после выполнения HibernateCallback. Большинство DBM будут откатываться, если вы не делаете коммит, но Oracle выполнит их (для вас).

Чтобы получить исключение, вам нужно установить значение falseCreate в false в HibernateTemplate.

Подробнее: https://community.jboss.org/wiki/Non-transactionalDataAccessAndTheAuto-commitMode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...