В моем проекте я использую Hibernate, а также Spring, и оба могут управлять транзакцией здесь, мой вопрос в том, что будет хорошо управлять транзакцией в приложении.Какая из них лучше использовать транзакцию Hibernate или весеннюю транзакцию?
ответ
Весна сама по себе не способна начать/совершить/отменить транзакцию; его цель состоит в том, чтобы удалить код плиты котла, необходимый для управления жизненным циклом транзакции, и делегировать движок персистентности (Hibernate, JDBC, JPA и т. д.) реальный запуск/фиксация/откат.
Возьмем такой пример:
Session s = sessionFactory.getCurrentSession();
Transaction tx = s.beginTransaction();
try
{
doSomeStuff();
tx.commit();
}
catch(HibernateException e)
{
tx.rollback();
}
s.close();
Это стандартная (плита котла) для выполнения операций по сделке (с использованием Hibernate, если вам нужно переключиться на JPA вам нужно переписать код).
С весной вы можете использовать декларативно (АОП, с помощью XML или с помощью аннотаций), чтобы удалить стандартный код таким образом:
@Transactional
public void doSomeStuff()
{
// your code
}
Я использую аннотацию, например, и @Transactional
используется для замены все котла пластины кода выше, и у вас есть еще одна функция: переход на JPA прозрачен, потому что это просто проблема конфигурации. Вопрос действительно сложный, и ответ на ваш вопрос:
Вы не можете «сравнить» транзакцию Спящего режима и весеннюю сделку, потому что это две разные вещи; Весенняя транзакция должна быть «Весенняя поддержка транзакций»
Весна - это та, которая позволит вам управлять транзакциями в декларативном пути (используя AOP, настроенный глобально или с аннотациями @Transactional
). И если вы не используете JTA, вы настроите его для делегирования в Hibernate для обработки транзакций.
Используйте Spring для обработки транзакций.
Можно ли более подробно изучить свой ответ? –
См. Http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/htmlsingle/#transaction-declarative и http://static.springsource.org/spring/docs/3.2.x/весна-каркасного ссылка/htmlsingle/# ОРМ-зимуют-ТХ-декларативной. Если у вас есть более конкретный вопрос, возможно, я смогу ответить на него. –
- 1. LazyInitializationException несмотря на весеннюю транзакцию?
- 2. Как сделать весеннюю транзакцию атомом
- 3. использовать транзакцию JTA или нет?
- 4. Какая из них лучше?
- 5. Не удалось открыть весеннюю транзакцию при обслуживании
- 6. Какая из них лучше?
- 7. Как выбрать РАСПРОСТРАНЕНИЕ в весеннюю транзакцию?
- 8. Spring-boot & hibernate, используя транзакцию
- 9. Как использовать транзакции (начать транзакцию, совершить транзакцию)?
- 10. Какая из них лучше комета или аякса?
- 11. Какая из них лучше или быстрее?
- 12. Hibernate - Где лучше всего начать транзакцию в многоуровневом веб-приложении?
- 13. Пропустить текущую транзакцию или использовать DependentClone?
- 14. Какая из них лучше использовать AFNetworking или ASIHTTP?
- 15. DoCmd.RunSQL Использовать транзакцию?
- 16. Как использовать транзакцию DatastoreIO
- 17. opensessioninview и совершить транзакцию
- 18. Блокировка таблицы (? Или использовать транзакцию) для оплаты
- 19. Как обрабатывать весеннюю транзакцию на двух разных серверах приложений
- 20. Hibernate и JDBC за одну транзакцию
- 21. Мне нужно знать, когда hibernate завершил транзакцию
- 22. Как проверяет транзакцию на транзакцию цепочки
- 23. Использовать транзакцию для нескольких сохранения
- 24. Hibernate & Spring: исключение при попытке создать транзакцию
- 25. Hibernate - сохранение нескольких объектов за одну транзакцию
- 26. PlayFramework. Использовать транзакцию в конструкторе объекта
- 27. Создайте простую транзакцию jdbc внутри транзакции hibernate
- 28. Текущая категория Magento? Какая из них лучше?
- 29. Как использовать транзакцию в WSO2
- 30. Как использовать транзакцию в Snowflake?
Посмотрите, пожалуйста, подробные объяснения, но один вопрос в моем сознании, если я выполняю 10-12 запросов, и все запросы являются взаимозависимыми, и если у запроса есть какие-либо проблемы, данные будут откат только с использованием записи @Transactional? –
Я не получил ваш последний комментарий –
Да, данные будут отклонены только с помощью '@ Transactional': если' // ваш код' содержит ваши 10-12 запросов, а один не выполняется, все предыдущие команды отбрасываются; '@ Transactional' применяются ко всему методу –