Jdbc транзакции в Spring+Hibernate
От: Аноним  
Дата: 06.10.08 07:59
Оценка:
Не подскажут ли уважаемые бест-практис для этой ситуации. То есть имеем Spring-приложение, которое персистит данные через Hibernate. В спринговом конфиге задан Hibernate transactionManager. Возможно ли использовать этот же Hibernate transactionManager для организации транзакций с использованием plain Jdbc? В референс мануале упоминается кратко, что такое возможно, если использовать DataSource из HibernateTransactionManager. Использую Jdbc через спринговый JDBCTemplate. Создаю JDBCTemplate с DataSource-м взятым из HibernateTransactionManager. Транзакция нифига не работает. Возникает такое ощущение, что она просто не коммитается в конце, потому как селекты работают нормально, а инсерты просто не попадают в базу....
Re: Jdbc транзакции в Spring+Hibernate
От: Blazkowicz Россия  
Дата: 06.10.08 08:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не подскажут ли уважаемые бест-практис для этой ситуации. То есть имеем Spring-приложение, которое персистит данные через Hibernate. В спринговом конфиге задан Hibernate transactionManager. Возможно ли использовать этот же Hibernate transactionManager для организации транзакций с использованием plain Jdbc? В референс мануале упоминается кратко, что такое возможно, если использовать DataSource из HibernateTransactionManager. Использую Jdbc через спринговый JDBCTemplate. Создаю JDBCTemplate с DataSource-м взятым из HibernateTransactionManager. Транзакция нифига не работает. Возникает такое ощущение, что она просто не коммитается в конце, потому как селекты работают нормально, а инсерты просто не попадают в базу....

А propagation для методов установлен?
Re[2]: Jdbc транзакции в Spring+Hibernate
От: Аноним  
Дата: 06.10.08 08:35
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Аноним, Вы писали:


А>>Не подскажут ли уважаемые бест-практис для этой ситуации. То есть имеем Spring-приложение, которое персистит данные через Hibernate. В спринговом конфиге задан Hibernate transactionManager. Возможно ли использовать этот же Hibernate transactionManager для организации транзакций с использованием plain Jdbc? В референс мануале упоминается кратко, что такое возможно, если использовать DataSource из HibernateTransactionManager. Использую Jdbc через спринговый JDBCTemplate. Создаю JDBCTemplate с DataSource-м взятым из HibernateTransactionManager. Транзакция нифига не работает. Возникает такое ощущение, что она просто не коммитается в конце, потому как селекты работают нормально, а инсерты просто не попадают в базу....

B>А propagation для методов установлен?

В яном виде propagation не задан. То есть метод помечен как @Transactional и все. Мое понимание, что дефолтный propagation должен быть required.
Re[3]: Jdbc транзакции в Spring+Hibernate
От: Blazkowicz Россия  
Дата: 06.10.08 09:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В яном виде propagation не задан. То есть метод помечен как @Transactional и все. Мое понимание, что дефолтный propagation должен быть required.


В XML тоже все что надо сконфигурено? Просто поведение похоже на то что автокомит отключен для транзакций, но транзакционность не работает вообще. Можно подебажить спринговую проксю и посмотреть в ней по какой причине коммита не происходит.
Re: Jdbc транзакции в Spring+Hibernate
От: KRA Украина  
Дата: 06.10.08 11:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не подскажут ли уважаемые бест-практис для этой ситуации. То есть имеем Spring-приложение, которое персистит данные через Hibernate. В спринговом конфиге задан Hibernate transactionManager. Возможно ли использовать этот же Hibernate transactionManager для организации транзакций с использованием plain Jdbc? В референс мануале упоминается кратко, что такое возможно, если использовать DataSource из HibernateTransactionManager. Использую Jdbc через спринговый JDBCTemplate. Создаю JDBCTemplate с DataSource-м взятым из HibernateTransactionManager. Транзакция нифига не работает. Возникает такое ощущение, что она просто не коммитается в конце, потому как селекты работают нормально, а инсерты просто не попадают в базу....


Не зная как сконфигурирован хибернейт тяжело ответить.

Вот такая конфигурация у меня работает

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="annotatedClasses">
            <list>
               ... skipped ...
            </list>
        </property>
    </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="url" value="$db{db.url}"/>
        <property name="username" value="$db{db.username}"/>
        <property name="password" value="$db{db.password}"/>
        <property name="driverClassName" value="$db{db.driverClassName}"/>

        <property name="initialSize" value="$db{dbpool.initialSize}"/>
        <property name="maxActive" value="$db{dbpool.maxActive}"/>
        <property name="maxIdle" value="$db{dbpool.maxIdle}"/>
        <property name="maxWait" value="$db{dbpool.maxWait}"/>        
        <property name="defaultAutoCommit" value="false"/>
    </bean>

    <tx:annotation-driven/>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg ref="dataSource"/>
    </bean>
Re: Jdbc транзакции в Spring+Hibernate
От: Аноним  
Дата: 06.10.08 18:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не подскажут ли уважаемые бест-практис для этой ситуации. То есть имеем Spring-приложение, которое персистит данные через Hibernate. В спринговом конфиге задан Hibernate transactionManager. Возможно ли использовать этот же Hibernate transactionManager для организации транзакций с использованием plain Jdbc? В референс мануале упоминается кратко, что такое возможно, если использовать DataSource из HibernateTransactionManager. Использую Jdbc через спринговый JDBCTemplate. Создаю JDBCTemplate с DataSource-м взятым из HibernateTransactionManager. Транзакция нифига не работает. Возникает такое ощущение, что она просто не коммитается в конце, потому как селекты работают нормально, а инсерты просто не попадают в базу....



Ребята, спасибо за советы. Разобрался — нашел в чем были у меня грабли. Конфиг от KRA работает.
Re[3]: Jdbc транзакции в Spring+Hibernate
От: A_Gura Россия http://a-gura.livejournal.com
Дата: 06.10.08 20:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В яном виде propagation не задан. То есть метод помечен как @Transactional и все. Мое понимание, что дефолтный propagation должен быть required.


Как сконфигурировано управление транзакциями (кусочек конфига, который tx:annotation-driven)?
Работать надо над собой...
Re: Jdbc транзакции в Spring+Hibernate
От: and_hom  
Дата: 07.10.08 13:42
Оценка:
А попробуйте hibernateTemplate.executeSQL(...)
В названии метода мог ошибиться, но он как-то так называется

А>Не подскажут ли уважаемые бест-практис для этой ситуации. То есть имеем Spring-приложение, которое персистит данные через Hibernate. В спринговом конфиге задан Hibernate transactionManager. Возможно ли использовать этот же Hibernate transactionManager для организации транзакций с использованием plain Jdbc? В референс мануале упоминается кратко, что такое возможно, если использовать DataSource из HibernateTransactionManager. Использую Jdbc через спринговый JDBCTemplate. Создаю JDBCTemplate с DataSource-м взятым из HibernateTransactionManager. Транзакция нифига не работает. Возникает такое ощущение, что она просто не коммитается в конце, потому как селекты работают нормально, а инсерты просто не попадают в базу....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.