스프링에서 정말 중요한 DB관리 기능이다 JPA에 대해서 완벽하게 알지는 못하겠지만 최소 개념정도만 알고가자
JPA 이해
ORM(object Relational Mapping)
객체지향언어와 관계형 데이터베이스를 뜻한다.
웹서버에서 각 프로그래밍언어를 쓰면서 코드를 쓰고 , DB쪽에서도 DB에서만 쓸수있는 코드를 쓰는데, 그 가운데에서 통역역할로 쓰는것이 ORM이다.
JPA는?
Java Persistence API 자바 ORM기술에 대한 표준 명세
쉽게말해 웹서버와 DB사이의 ORM역할을 하는것이 JPA다.
JPA의 샘플코드를 살펴보자
@Entity // DB 테이블 역할을 합니다.
public class User {
// ID가 자동으로 생성 및 증가합니다.
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long id;
// nullable: null 허용 여부
// unique: 중복 허용 여부 (false 일때 중복 허용)
@Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
@Enumerated(value = EnumType.STRING)
private UserRoleEnum role;
@Column(unique = true)
private Long kakaoId;
}
Entity가 DB테이블 역할을 한다.
User라는 클래스에서 id를 기본키값으로 주고 username,password,email,role,kakaoId의 행을 만들어 준다.
저렇게 코드를 실행시키면
이렇게 USER라는 테이블에 각 넣어준 행값이 만들어진것을 볼 수 있다.
만약 JPA가 없다면?
직접SQL구문을 써서 해결가능하지만 사실상 개무쓸모. JPA를 쓰는게 훨씬 편하다.
하이버네이트??
JPA는 표준명세이고 이를 실제 구현한 프레임워크 중 사실상(비공식) 표준 ,
스프링 부트에서는 기본적으로 하이버네이트를 사용 중이다.
댓글