2014-07-01 30 views

回答

2

JPA是一种规范,以及一些实现者的提供下面的说明书中的实施方式。

所以,如果你使用JPA,因为它是为了使用,你就可以从一个或多个实现者的选择,它应该“插件和播放”的工作。换句话说,你不应该改变你的代码,因为实现将完成规范承诺的事情。

---至于JPA和Hibernate之间的差---

JPA是规范,但Hibernate是一个实现。如果您针对JPA编写代码,则可以轻松地在JPA兼容的实现之间进行更改;但是,如果您针对Hibernate编写代码,则需要更改您的数据库访问代码。

注意,Hibernate也提供了一些JPA的兼容性,如果你照顾只使用Hibernate提供的JPA兼容的一部分,您可以有效地被使用Hibernate提供的实施对写作JPA。

有做JPA的发展,在防止非JPA(实现特定的)的代码被写入作品相当不错的一个receipe。

  1. 找到您要定位的JPA版本的JPA JAR。
  2. 将该jar添加到编译类路径和运行时类路径中。
  3. 找到你想使用的JPA提供程序(Hibernate等)。
  4. 只将那些/这些罐子添加到运行时类路径。
+0

非常感谢,但休眠有org.hibernate。会话,也可以在一些与你的单词entityManager同时使用的hibernate教程中使用。那为什么是会议。我想知道Hibernate entitymanager的实现是建立在org.hibernate.session – merveotesi

+0

那么,你必须选择适合你需求的教程。如果您正在执行JPA,请选择JPA教程。如果你在JPA之外的Hibernate绑定Hibernate教程。 –

0

JPA是由JCP(Java Community Process)作为JSR(Java规范请求)发布的Java持久性API。

这是一种规范的;换句话说就像界面一样,没有包含实现。

每个供应商(执行者)谁感兴趣这个天赋需要实现因为它规范文档中说。

这里是示例JPA 2.0 spec

相关问题