java – JPA和Hibernate注释之间的关系

我是Spring世界的新手,我正在研究如何集成Hibernate和Spring框架

我有一些关于Hibernate注释和JPA注释之间关系的数据.

我有类似下面的实体类:

package org.andrea.myexample.HibernateOnSpring.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


/* Classe che rappresenta un oggetto da persistere sul database
 * 
 */
@Entity
@Table(name="person")
public class Person {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int pid;

    private String firstname;

    private String lastname;

    public int getPid() {
        return pid;
    }

    public void setPid(int pid) {
        this.pid = pid;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
}

我不理解的是Hibernate注释和JPA注释之间的关系是什么

注释@ Entity,@ Table(name =“person”),@ GeneratedValue(strategy = GenerationType.AUTO)和前面示例中的id是简单的JPA注释或Hibernate的特定注释?

如果我使用JPA注释将数据持久化到数据库,那么Hibernate给了我什么?

TNX

安德里亚

最佳答案
答案很复杂.

正如其他人所指出的那样,JPA是一个Hibernate提供实现的规范.您使用JPA注释/ API,并且通过在类路径中包含Hibernate jar,Hibernate将提供实际的逻辑.

此外,Hibernate提供了与JPA无关的API.你也可以使用它;主要区别是:

>如果您使用JPA API,您可能会在以后用其他JPA实现(例如EclipseLink)替换Hibernate,您不需要对程序进行任何更改
>如果直接使用Hibernate API,则没有实现替代方案.优点可能是您可以使用Hibernate已定义但不属于JPA标准的功能,这些功能可能对您有用.

无论如何,你应该完全避免将JPA与Hibernate API混合使用.作为初学者,我建议你坚持使用JPA.

要确保使用JPA,请仅包含java.persistence中的类/注释.不要包含org.hibernate中的任何内容(或者,如果您只想使用Hibernate,请执行相反的操作).

转载注明原文:java – JPA和Hibernate注释之间的关系 - 代码日志