2011-11-29 75 views
1

我知道hibernate是JPA的一个实现,也有它自己的特性。我试图在注释中使用hibernate,但是我发现我必须在包“javax.persistence。*”下使用一些注释,例如:Column,OneToMany,ManyToOne等等。如果我想使用Hibernate和Annotation,我必须使用javax.persistence。*吗?

我不想使用JPA,但在包“org.hibernate.annotations”下我找不到像OneToMany一样的注释。那么,jpa annatations是hibernate的一部分吗?如果我想用jpa使用hibernate,我必须使用一些“javax.persistence。*”注释?

+0

在我看来,如果你需要JPA注解,你不应该避免不使用JPA。在你的情况下,JPA扩展了Hibernate,你需要它,那么你为什么不直接使用JPA与休眠。 –

+1

为什么您不想在可以使用JPA的地方使用? –

+0

Dup of http://stackoverflow.com/questions/8306793/why-jpa-and-hibernate-both-have-entity-and-table-annotations – DataNucleus

回答

5

如果我想使用hibernate与jpa,我必须使用一些 “javax.persistence。*”注释?

是的,你是对的

JPA规范。在javax.persistence包中定义了JPA注释。 Hibernate不仅实现了JPA规范,而且扩展了它以增加更多功能。所以,休眠创建自己的注解刚刚延长了JPA注解使用Hibernate的功能,并把这些标注在包装内org.hibernate.annotations

如果有对于JPA注释添加(如@OneToMany@ManyToOne)无休眠指定的功能,休眠将不会在其org.hibernate.annotations包中做出该注释,并且您必须根据JPA规范使用来自javax.persistence的这些注释。

通常,人们会使用JPA批注,直到遇到需要使用休眠功能的情况。

+0

正是我想知道的! – Freewind

相关问题