[英]GWT Hibernate import javax.persistence.*; not resolved why?
[英]hibernate equivalent of javax.persistence.* annotations
在下面的java实体bean类中,我们使用@Id和其他注释。 它们来自javax.persistence。*包。
我读过SO和其他论坛,每个人都说JPA是规范/规则集,而Hibernate是JPA实现之一。如果是这样,JPA怎么提供这些类/接口,例如@Id(Generator接口)。
如果我理解正确,那么JPA本身就提供了无需使用Hibernate就可以支持ORM的功能。
另外,我想知道1)与这些JPA注释-@ Id对应的Hibernate注释类。 2)对于javax.persistence。*包,我们需要使用Hibernate-Annotations jar吗? 或者它们来自JPA特定的jar,如果是的话,请帮助我了解软件包名称。
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "employee")
public class Employee implements Serializable {
public Employee() {
}
@Id
@Column(name = "id")
Integer id;
@Column(name = "name")
String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
JPA是这样的规范:实体类是用@ javax.persistence.Entity注释的类。 它必须具有一个用@ javax.persistence.Id注释的字段或getter。
Hibernate实现了规范所说的内容。 因此,它使用标准的JPA批注。 如果使用专有注释,则不会遵守规范。 而且,如果规范没有定义任何注释,则每个实现都必须定义自己的专有注释,并且不可能编写适用于该标准的各种实现的JPA代码。
注释基本上是没有实现的接口。 JPA是API的规范,不是实现。 可以通过注释访问JPA API。 JPA说应该做什么,而不是应该怎么做。
诸如Hibernate或EclipseLink之类的特定实现将在编译时和运行时使用注释来实现功能。 因此,注释是实现的标记,用于实现将其钩在自己的代码中或如何处理某些对象的方法。 因此,使用JPA时,在Hibernate中不需要相应的注释。 注释应该是标准注释,以便Hibernate可以识别它们。
如果使用供应商特定的注释,则使用的是其他API。 这个不同的API甚至可能使用相同的实现,但是您以不同的方式访问它。 当供应商特定的API提供JPA无法交付且您需要的功能时,将其与供应商特定的注释一起使用会很有用。 特别是在JPA 2.0之前,Hibernate提供了比标准更多的功能,因此使用供应商特定的API并不少见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.