Разница между JTA, JPA и Plain JDBC в спящем режиме - PullRequest
52 голосов
/ 11 октября 2010

В чем разница между JTA, JPA и Plain JDBC с точки зрения гибернации?

Ответы [ 2 ]

76 голосов
/ 11 октября 2010

Для того, чтобы существовала разница, должно быть что-то общее, и помимо того, что она связана с базой данных (хотя JTA не только это), у них нет ничего общего:

  • JPA - это стандарт для объектно-реляционного отображения Java - он определяет набор аннотаций и интерфейс - EntityManager для выполнения операций сохранения с сопоставленными объектами. Hibernate реализует стандарт JPA

  • plain JDBC - это технология доступа к базам данных. Это то, что Hibernate фактически использует для выполнения операций с базой данных, «под капотом». Он использует JDBC для отправки запросов в базу данных.

  • JTA - это API транзакций, и он не обязателен в Hibernate. Он обрабатывает (логически) поведение транзакции.

26 голосов
/ 05 апреля 2014

JDBC - это стандарт Java для подключения к базе данных.

JPA изолирует разработчика Java от внутренней работы JDBC и операций с базой данных.

Hibernate, EclipseLink, OpenJPA и Data Nucleus являются известными реализациями JPA.

JTA - это стандарт для транзакций, позволяющий управлять несколькими транзакциями между несколькими базами данных.

JPA использует JDBC для соединений с базой данных и операциями, связанными с SQL, и - опционально - использует JTA для передачи ему подробностей управления распределенными транзакциями.

...