JTA、JPA和普通的JDBC在Hibernate方面有什么区别?
要有差异存在,就必须有共同点,除了与数据库相关(虽然JTA不仅仅是这样),它们没有更多的共同点:
JPA 是 Java 对象关系映射的标准 - 它指定了一组注释和一个接口 EntityManager
用于执行与映射对象的持久化操作。Hibernate 实现了 JPA 标准。
普通 JDBC 是访问数据库的技术。Hibernate 实际上使用它来执行数据库操作,在 "幕后" 使用 JDBC 发送查询到数据库。
JTA 是一个事务 API,并且在 Hibernate 中是可选的。它 (逻辑上) 处理事务行为。
JPA 利用 JDBC 进行数据库连接和 SQL 相关操作,并 -可选地- 利用 JTA 将分布式事务管理细节委托给它。
JPA (Java 持久化 API) 是 Java ORM 标准/规范,用于在关系型数据库中存储、访问和管理 Java 对象。Hibernate 是 Java Persistence API (JPA) 规范的一个实现。
JTA (Java 事务 API) 是 Java 分布式事务的标准/规范。当您有跨多个连接/数据库/资源的事务时,它就会发挥作用。Atomikos 是 JTA 的一个实现。(像 IBM Websphere 这样的应用服务器拥有自己的 JTA 实现。)