복붙노트

[SPRING] JPA와 Hibernate 주석 간의 관계

SPRING

JPA와 Hibernate 주석 간의 관계

나는 봄 세계에서 아주 새로운데, 나는 Hibernate와 Spring 프레임 워크를 통합하는 방법을 연구하고있다.

나는 Hibernate annotation과 JPA annotation 사이의 관계에 대해 의심이있다.

다음 엔티티 클래스와 같은 것을 가질 때 :

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 주석을 사용하여 데이터베이스에 데이터를 저장하는 경우 최대 절전 모드를 제공하는 것은 무엇입니까?

Txx

안드레아

해결법

  1. ==============================

    1.대답은 혼란 스럽습니다.

    대답은 혼란 스럽습니다.

    다른 사람들이 지적했듯이, JPA는 Hibernate가 구현을 제공하는 명세이다. JPA annotations / API를 사용하고 클래스 패스에 Hibernate jar를 포함시킴으로써 Hibernate는 실제 로직을 제공 할 것이다.

    또한, Hibernate는 JPA와 관련이없는 API를 제공한다. 당신도 그것을 사용할 수 있습니다. 주요 차이점은 다음과 같습니다.

    어쨌든, JPA와 Hibernate API를 섞어서 완전히 피하는 것이 좋다. 초보자로서 JPA에 충실하도록 조언합니다.

    JPA를 사용하려면 java.persistence의 클래스 / 주석 만 포함하십시오. org.hibernate로부터 아무 것도 포함하지 말라. (또는 단지 Hibernate를 사용하기를 원한다면, 그 반대 일을한다.)

  2. ==============================

    2.Hibernate는 JPA 스펙의 구현이다. JPA는 단지 명세이며, 주석과 인터페이스 세트입니다. JPA를 사용하려면 JPA를 구현해야하며, Hibernate도 그 중 하나입니다. JDBC를 사용하는 것처럼 데이터베이스 드라이버가 필요합니다.

    Hibernate는 JPA 스펙의 구현이다. JPA는 단지 명세이며, 주석과 인터페이스 세트입니다. JPA를 사용하려면 JPA를 구현해야하며, Hibernate도 그 중 하나입니다. JDBC를 사용하는 것처럼 데이터베이스 드라이버가 필요합니다.

    주석의 패키지는 javax.persistence이므로 JPA 주석이됩니다. Hibernate 어노테이션은 org.hibernate.xxx 패키지에있다.

  3. ==============================

    3.@ SJuan76처럼 JPA (Java Persistence API)는 사양이고 Hibernate는 하나의 구현입니다. 나는 다른 사람들과 동의한다. 가능한 한 많이 JPA를 사용하십시오. JPA 사양은 자주 변경되지 않으며 일반적으로 이전 버전과 호환됩니다. 즉, 코드가 구현 변경으로부터 보호됩니다. 예를 들어 코드가 org.hibernate. *가 아닌 javax.persistence. *에 의존하지 않는다면 Hibernate 의존성을 자유롭게 업그레이드 할 수 있습니다.

    @ SJuan76처럼 JPA (Java Persistence API)는 사양이고 Hibernate는 하나의 구현입니다. 나는 다른 사람들과 동의한다. 가능한 한 많이 JPA를 사용하십시오. JPA 사양은 자주 변경되지 않으며 일반적으로 이전 버전과 호환됩니다. 즉, 코드가 구현 변경으로부터 보호됩니다. 예를 들어 코드가 org.hibernate. *가 아닌 javax.persistence. *에 의존하지 않는다면 Hibernate 의존성을 자유롭게 업그레이드 할 수 있습니다.

    Btw. JPA는 Hibernate 5.3부터 버전 2.2에있다. JPA에 대한 자세한 내용은 여기를 참조하십시오.

  4. from https://stackoverflow.com/questions/15040583/relation-between-jpa-and-hibernate-annotation by cc-by-sa and MIT license