Я пытался узнать spring и спящий режим, и я использовал множество примеров по сети, чтобы собрать приятное приложение. Однако теперь я понял, что spring поддерживает управление транзакциями. В моем приложении spring я просто сделал все, что хотел, прямо в спящий режим. Есть ли причина/польза от того, почему люди будут использовать spring управление транзакциями/db?
Преимущества использования Springs Управление транзакциями против использования спящего режима
Ответ 1
Реальные преимущества:
-
Легкий декларативный синтаксис. Для сравнения:
public void saveEmployee(Employee e) { Session s = sf.getCurrentSession(); s.getTransaction().begin(); s.save(e); s.getTransaction().commit(); }
и
@Transactional public void saveEmployee(Employee e) { sf.getCurrentSession().save(e); }
-
Гибкое распространение транзакций. Представьте себе, что теперь вам нужно выполнить этот метод
saveEmployee()
как часть сложной транзакции. При ручном управлении транзакциями вам необходимо изменить метод, поскольку управление транзакциями жестко запрограммировано. С Spring распространение транзакций работает плавно:@Transactional public void hireEmployee(Employee e) { dao.saveEmployee(e); doOtherStuffInTheSameTransaction(e); }
-
Автоматический откат в случае исключений
Ответ 2
spring ссылка doc упоминает это очень ясно
Структура Spring предоставляет согласованная абстракция для транзакции управление, которое обеспечивает следующее Преимущества:
- Обеспечивает согласованную модель программирования для разных транзакций API, такие как JTA, JDBC, Hibernate, JPA и JDO.
- Поддерживает декларативное управление транзакциями.
- Предоставляет более простой API для управления программными транзакциями чем ряд сложных транзакций API, такие как JTA.
- Интегрирует очень хорошо с Spring различными абстракциями доступа к данным.
Обеспечивает согласованную модель программирования для разных транзакций API, такие как JTA, JDBC, Hibernate, JPA и JDO.
Предположим, вы используете hibernate api для управления транзакциями и когда-нибудь по дороге, которую вы хотели бы переключить на JDO. Это требует изменения кода управления транзакциями. Если вы используете Spring, то никаких изменений не будет.
Поддерживает декларативное управление транзакциями.
Аналогично EJB
Обеспечивает более простой API для управления программными транзакциями чем ряд сложных транзакций API, такие как JTA.
JTA и JDBC имеют разные API для управления транзакциями. Spring тезисы, предоставляемые единообразным API.