[JPA 시리즈] 3 - 연관관계 매핑 (1)
·
Development/Java(Spring, JPA, etc.)
벌써 새해도 20일 넘게 지났다. 이제 와서 지난 한 해를 반추해 보니 별일 없는 듯 무언가 많이 지나갔다. 가장 큰 건 아주 원하는 곳은 아니긴 했지만 취업을 한 것이니 요즘 같은 시기에 그저 다행일 따름이다. JPA 관련해서 글 올리는 게 오늘로 5번째다, 분명 처음 시작할 때에는 '1주일에 1개는 올리겠다!'라는 생각으로 시작했는데 아직 이만치밖에 못한 것에 벌써 느슨해 진건 아닌지 스스로 반성을 하게 된다. 아무리 3교대 근무라지만 쉬는 날에 할 수도 있었는데 말이다(...).각설하고 연관관계 매핑에 대해 알아보자.위 포스트는 인프런 김영한님 강의(자바 ORM 표준 JPA 프로그래밍 - 기본편)의 내용을 포함하고 있습니다.연관관계?객체에서 왜 연관관계가 필요한 걸까? '어차피 DB 테이블에 테이블..
[JPA 시리즈] 2 - 엔티티 매핑 (2 - 컬럼 매핑과 기본 키 매핑)
·
Development/Java(Spring, JPA, etc.)
전 포스트에 이어 컬럼 매핑과 기본 키 매핑에 대해 알아보자.컬럼 매핑오늘은 코드부터 보고 시작하자.import jakarta.persistence.*;import java.time.LocalDate;import java.time.LocalDateTime;import java.util.Date;@Entitypublic class Member { @Id private Long id; @Column(name = "name") // 컬럼 매핑 private String username; private Integer age; @Enumerated(EnumType.STRING) // enum 타입 매핑 private RoleType roleType; ..
[JPA 시리즈] 2 - 엔티티 매핑 (1 - 엔티티 매핑 / 스키마 자동 생성)
·
Development/Java(Spring, JPA, etc.)
위 포스트는 인프런 김영한님 강의(자바 ORM 표준 JPA 프로그래밍 - 기본편)의 내용을 포함하고 있음을 밝힙니다.엔티티 매핑앞서 영속성 컨텍스트로 객체(엔티티)를 저장하는 방법을 보았다.이때 순수 자바 객체 상태로는 저장을 할 수 없기 때문에 영속성 컨텍스트에 저장하기 전에 사전처리를 해주어야 한다. 이 사전처리를 엔티티 매핑이라고 부른다. 먼저 객체와 테이블 매핑부터 살펴보자.객체 - 테이블 매핑@Entity객체와 테이블을 매핑하기 위해서는 반드시 객체에 @Entity 어노테이션을 붙여주어야 한다.이때 @Entity를 붙인 클래스를 엔티티라 부르며, JPA에서 관리하게 된다.주의할 점은 클래스에 기본 생성자를 반드시 만들어주어야 하고(파라미터가 없는 public이나 protected 생성자), fi..
[JPA 시리즈] 1 - 영속성 컨텍스트 (2 - 준영속)
·
Development/Java(Spring, JPA, etc.)
앞 글에서 이어집니다.직전에 미처 설명하지 못한 준영속을 알아보자. 준영속?앞전에 설명했다시피 JPA에서 객체가 영속성 컨텍스트에 들어가 관리를 받고 있는 상태를 영속, 영속 상태에서 컨텍스트에서 분리되어 나오면 준영속 상태라고 했다.그런데 이 시점에서 '근데 왜 객체가 컨텍스트에서 떨어져 나와서 연관도 없어졌는데 비영속이 아니라 준영속임?'이라는 의문이 생길 것이다. 이미 분리되어 나와서 관리도 안되지, 거기에다 영속성 컨텍스트가 제공하는 기능도 사용을 하지 못하니 언뜻 겉으로 보기에는 비영속 상태와 다를 바가 없어 보이기도 하다.하지만 비영속 상태와 준영속 상태의 차이점은 준영속은 비영속 상태와 달리 객체에 식별자를 가지고 있다. 이때 준영속 상태의 객체가 merge(병합)라는 과정을 거치면 다시 영..