JPA (6) 썸네일형 리스트형 JPA - 기본 키 매핑 IDENETITY vs SEQUNECE MySQL 8.0 innoDB 스토리지 엔진 환경에서 JPA를 사용했을 때 기준으로 포스팅을 작성합니다. 포스팅은 자바 ORM 표준 JPA 프로그래밍과 개인 프로젝트를 통해 얻은 경험을 바탕으로 작성하였습니다. 목차 1. 들어가기 앞서 가볍게 JPA를 통해 기본키 설정 2. IDENETITY 전략 및 주의사항 3. SEQUENCE 전략과 allocationSize 4. IDENTITY vs SEQUENCE JPA는 @Id를 통해 기본 키를 할당할 수 있습니다. 아래와 같이 기본키를 직접 생성할 수 있습니다. @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class StudyProduct { @Id @Column(name = "stud.. JPA - 단방향 @OnetoMany 연관관계 설정 시 단점 @CollectionElement, 단방향 @ManyToOne 혹은 양방향 셋 중 하나를 선택하는 경우가 잦았다. JPA를 처음 공부한 이후로 남은 기억은 @OneToMany를 지양하라는 것 뿐이었다. 지양하는 이유는 희미해져갔는데 이번 기회에 다시 정리하려고 합니다. 목차 1. 단방향 OneToMany 단점 단방향 OneToMany 단점 단방향 OneToMany은 성능과 유지보수 두 측면에서 문제를 발생시킨다. 첫 째는 외래키의 관리이다. @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Group { @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "group_id") p.. JPA - 값 타입 컬렉션 주의 사항 값 타입 컬렉션을 제대로 이해하고 있지 않아 설계 상 미스가 일어나게 되었다. 값 타입 컬렉션을 정리하고 프로젝트 리팩토링을 하려고 합니다. 목차 1. 값 타입 컬렉션 2. 값 타입 컬렉션 특징 - INSERT - UPDATE - 책에서 말하는 권장사항 값 타입 컬렉션 값 타입을 하나 이상 저장하려면 컬렉션에 보관하고 @ElementCollection, @CollectionTable 어노테이션을 사용하면 된다. @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Group { @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "group_id") private Long id; @.. JPA - @JoinColumn, mappedBy DDD에서 @ManyToOne과 같은 애노테이션으로 외래키를 통해 연관관계를 맺는 것을 지양합니다. 더 상세히 말하면 다른 도메인의 엔티티와 의존 관계를 맺는 것을 지양합니다. 여튼 이런 이유로 인해 위 애노테이션을 잘 찾지 않게 되었습니다. 오랜만에 위 애노테이션에 대해 정리하려고 합니다. 목차 1. @JoinColumn 2. mappedBy 옵션 @JoinColumn 이 애노테이션을 이해하기 위해서는 먼저 알아야할 것들이 있습니다. 1. JPA의 연관관계 애노테이션은 외래키를 통해 테이블을 연결한다. 2. 외래키가 어디에 속할지 명시하지 않으면 연결테이블이 생성될 수도 있다. 예를 들면 @OneToMany만 사용할 경우 2. 외래키를 특정 엔티티에 보관한다면 Many쪽에 보관할 수 밖에 없다.(고민을.. JPA - 2차 캐시 알은 채 하기 이 포스팅은 자바 ORM 표준 JPA 프로그래밍과 Hibernate ORM User Guide 6.1.7과 함께합니다. 목차 1. 1차 캐시의 범위 2 2차 캐시 - 동작 방식 - 특징 - 캐시 모드 설정 - 캐시 조회, 저장 설정 3. 실습 전 설정 - ehcache 의존성 주입 및 설정 - statistics 설정 4. 실습 - 실습에 사용될 엔티티 소개 - 데이터베이스를 접근하지 않는지 확인하기 - 캐시 데이터가 삭제되는지 확인하기 - CacheStoreMode.USE 이해하기 1차 캐시의 범위 1차 캐시는 영속성 컨텍스트 내부에 존재하는 캐시다. 여기서 중요한 것은 1차 캐시는 요청마다 독립적일 수 밖에 없다는 것이다. 1차 캐시의 생존 범위를 논할 때, OSIV로 설명하면 쉽게 설명할 수 있다... JPA - 값 타입 포스팅은 김영한님의 자바 ORM 표준 JPA 프로그래밍 책 내용을 기반으로 작성되었습니다. JPA의 데이터 타입은 엔티티 타입과 값 타입으로 나눌 수 있습니다. 엔티티 타입은 @Entity로 정의하고 값 타입은 int, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말합니다. 엔티티 타입은 식별자를 통해 지속해서 추적할 수 있지만, 값 타입은 식별자가 없고 숫자, 문자같은 속성만 있으므로 추적할 수 없습니다. 값 타입은 다음 3가지로 나눌 수 있습니다. 기본 값 타입, 임베디드 타입, 컬렉션 값 타입 목차 기본값 타입 임베디드 타입 값 타입과 불변 객체 ★ 값 타입의 비교 값 타입 컬렉션 ★ 기본값 타입 MemberV1의 username, age가 값 타입이다. MemberV1 엔티.. 이전 1 다음