[SPRING] JPA와 Hibernate 주석 간의 관계
SPRINGJPA와 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.대답은 혼란 스럽습니다.
대답은 혼란 스럽습니다.
다른 사람들이 지적했듯이, JPA는 Hibernate가 구현을 제공하는 명세이다. JPA annotations / API를 사용하고 클래스 패스에 Hibernate jar를 포함시킴으로써 Hibernate는 실제 로직을 제공 할 것이다.
또한, Hibernate는 JPA와 관련이없는 API를 제공한다. 당신도 그것을 사용할 수 있습니다. 주요 차이점은 다음과 같습니다.
어쨌든, JPA와 Hibernate API를 섞어서 완전히 피하는 것이 좋다. 초보자로서 JPA에 충실하도록 조언합니다.
JPA를 사용하려면 java.persistence의 클래스 / 주석 만 포함하십시오. org.hibernate로부터 아무 것도 포함하지 말라. (또는 단지 Hibernate를 사용하기를 원한다면, 그 반대 일을한다.)
-
==============================
2.Hibernate는 JPA 스펙의 구현이다. JPA는 단지 명세이며, 주석과 인터페이스 세트입니다. JPA를 사용하려면 JPA를 구현해야하며, Hibernate도 그 중 하나입니다. JDBC를 사용하는 것처럼 데이터베이스 드라이버가 필요합니다.
Hibernate는 JPA 스펙의 구현이다. JPA는 단지 명세이며, 주석과 인터페이스 세트입니다. JPA를 사용하려면 JPA를 구현해야하며, Hibernate도 그 중 하나입니다. JDBC를 사용하는 것처럼 데이터베이스 드라이버가 필요합니다.
주석의 패키지는 javax.persistence이므로 JPA 주석이됩니다. Hibernate 어노테이션은 org.hibernate.xxx 패키지에있다.
-
==============================
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에 대한 자세한 내용은 여기를 참조하십시오.
from https://stackoverflow.com/questions/15040583/relation-between-jpa-and-hibernate-annotation by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring @RequestParam 인수가 POST 메서드에서 전달되지 않음 (0) | 2019.03.17 |
---|---|
[SPRING] Spring RestTemplate 리디렉션 302 (0) | 2019.03.17 |
[SPRING] 스프링 웹 애플리케이션 상태 점검 (0) | 2019.03.17 |
[SPRING] 여러 트랜잭션 관리자를 단일 트랜잭션으로 처리 (0) | 2019.03.17 |
[SPRING] Spring Framework 애플리케이션에서 Beans.xml 설정 파일 사용에 관하여 (0) | 2019.03.17 |