Quelle est la différence entre JTA, JPA et Plain JDBC en termes d'hibernation?
Pour qu'une différence existe, il devrait y avoir quelque chose en commun, et en plus d'être lié à la base de données (bien que JTA ne soit pas seulement cela), ils n'ont rien de plus en commun:
JPA est un standard pour Java mapping objet-relationnel - il spécifie un ensemble d'annotations et une interface -EntityManager
pour effectuer des opérations de persistance avec les objets mappés. Hibernate implémente le standard JPA
plain JDBC est une technologie d'accès aux bases de données. C'est ce qu'Hibernate utilise réellement pour effectuer les opérations de base de données, "sous le capot". Il utilise JDBC pour envoyer des requêtes à la base de données.
JTA est une API de transaction, et elle est facultative dans Hibernate. Il gère (logiquement) le comportement de transaction.
JDBC est un standard Java pour la connexion à la base de données.
JPA isole le développeur Java du fonctionnement interne de JDBC et des opérations de base de données.
Hibernate, EclipseLink, OpenJPA et Data Nucleus sont des implémentations JPA célèbres.
JTA est une norme pour les transactions, permettant la gestion de plusieurs transactions entre plusieurs bases de données.
JPA utilise JDBC pour les connexions à la base de données et les opérations liées à SQL et, éventuellement, utilise JTA pour lui déléguer les détails de la gestion des transactions distribuées.