본문 바로가기

분류 전체보기126

[JPA] 연관관계 매핑, @OneToMany @ManyToOne @OneToOne @ManyToMany 본 포스팅은 김영한 강사의 자바 ORM 표준 JPA 프로그래밍 '기본편' 강의를 수강하며 정리한 내용임을 밝힌다. DB 테스트 환경은 H2 데이터베이스, IDE는 인텔리제이(community version)를 사용했다. 다중성 4가지 종류를 알아볼 차례이다. 다대일 (주인쪽에 걸어주는 것!) 일대다 (일쪽에서 다를 조회하는 로직이 필요하다면 매핑 걸어줄것!) 일대일 다대다 (실무에서는 쓰지 말것) 아래에 등장하는 관계 예시들은 게시판(Board)과 게시글(Post)의 관계이다. 1. 다대일 @ManyToOne 가장 많이 사용하는 연관관계 다대일 단방향 [N:1] : 주인인 '다'쪽에서는 '일'쪽 참조 가능하나, 반대는 조회도 불가능! 다대일 양방향 [N:1, 1:N] : 서로 참조하면 주인아닌 쪽에서는 .. 2021. 12. 15.
[JPA] 연관관계 매핑, 연관관계 주인 본 포스팅은 김영한 강사의 자바 ORM 표준 JPA 프로그래밍 '기본편' 강의를 수강하며 정리한 내용임을 밝힌다. DB 테스트 환경은 H2 데이터베이스, IDE는 인텔리제이(community version)를 사용했다. "객체와 관계형 데이터베이스 테이블이 어떻게 매핑되는지를 이해하는 것"이 JPA의 핵심이라고 한다. 이 부분은 중요한 만큼 여러번 실습해보았는데, 계속 헷갈리는 부분이 있어서 정리해보려고 한다. 연관관계 매핑은 비즈니스 로직, 요구사항에 따라 개발자가 더 적절한 관계를 선택해야 하기 때문에 잘 이해하고 있어야 한다. 1. 연관관계 정의 규칙 방향 : 단방향, 양방향 (객체 참조) 연관 관계의 주인 : 양방향일 때, 연관 관계에서 관리 주체 다중성 : 다대일(N:1), 일대다(1:N), 일.. 2021. 12. 15.
[JPA] JPA 엔티티 매핑 (다양한 타입, 기본키 매핑) 2021.12.14 - [SKILLS/JPA] - [JPA] JPA 엔티티 매핑 기본 @Entity, @Id, @Table, @Column 위의 저번 포스팅에 이어서 다양한 타입을 매핑하는 경우와 기본키 매핑 전략에 대해 알아보자. 1. 다양한 타입의 필드와 컬럼 매핑 package hellojpa; import javax.persistence.*; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; @Entity @Table (name="MBR") //DB에 매핑할 이름 public class Member { @Id private Long id; @Column(name = "name") //DB에 표시되는 .. 2021. 12. 15.
[JPA] 영속성 컨텍스트 본 포스팅은 김영한 강사의 자바 ORM 표준 JPA 프로그래밍 '기본편' 강의를 수강하며 정리한 내용임을 밝힌다. DB 테스트 환경은 H2 데이터베이스, IDE는 인텔리제이(community version)를 사용했다. JPA 매커니즘을 이해하고 학습하는데 가장 중요한 것이 영속성 컨텍스트를 이해하는 것이라고 한다. 이 개념과 생명주기를 이해하지 못하면 JPA를 제대로 활용할 수 없다고 한다. 1. 영속성 컨텍스트란? - 엔티티를 영구 저장하는 환경(논리적인 개념이며 눈에 보이지 않음) - EntityManager를 만들 때, 눈에 보이지는 않지만 EntityManager는 영속성 컨텍스트라는 공간을 가지게 된다. - 자주 사용하는 EntityManager.persist(entity); 를 하면 DB에 .. 2021. 12. 15.
[JPA] JPA 데이터 베이스 스키마 자동생성 persistence.xml 설정 파일에 아래와 같은 속성이 있다. 더보기 이 설정은 '스키마 자동 생성' 해주는 속성인데, 옵션을 살펴보며 부연설명을 하겠다. 옵션 설명 create 기존테이블 삭제 후 다시 생성 (DROP + CREATE) create-drop create와 같으나 종료시점에서 테이블 DROP update 변경분만 반영(운영 DB에서 사용하면 안됨) validate 엔티티와 테이블이 정상 매핑 되었는지만 확인 none 사용 안함 주의 할 점 운영 장비에는 절대 create, create-drop, update를 사용하면 안됨. 개발 초기 단계는 create 또는 update 테스트 서버는 update 또는 validate 스테이징과 운영 서버에는 validate 또는 none (non.. 2021. 12. 14.
[JPA] JPA 엔티티 매핑 기본 @Entity, @Id, @Table, @Column 본 포스팅은 김영한 강사의 자바 ORM 표준 JPA 프로그래밍 '기본편' 강의를 수강하며 정리한 내용임을 밝힌다. DB 테스트 환경은 H2 데이터베이스, IDE는 인텔리제이(community version)를 사용했다 1. 테이블 설계를 따른 엔티티 매핑 위 테이블을 생성하기 위해서 먼저 JAVA 클래스와 테이블을 매핑해야 한다. 테이블과 관련있는 4가지의 클래스를 만들고, 1개의 main 클래스를 만들어 실행해보려 한다. 1) Member.java package hellojpa; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persis.. 2021. 12. 14.