목록2025/05 (5)
kongkong.note
상속 관계 매핑ORM 상속 관계 매핑 : 객체의 상속 구조 ↔ 데이터베이스의 슈퍼타입 서브타입 관계 매핑슈퍼타입 서브타입 논리 모델을 테이블로 구현하는 방법각각 테이블 변환 : JPA 조인 전략통합 테이블 변환 : JPA 단일 테이블 전략 서브타입 테이블 변환 : JPA 구현 클래스마다 테이블 전략주요 어노테이션@Inheritance(strategy=InheritanceType.XXX)부모 크래스에 매핑 전략 지정JOINED: 조인 전략SINGLE_TABLE: 단일 테이블 전략TABLE_PER_CLASS: 구현 클래스마다 테이블 전략@DiscriminatorColumn(name=“DTYPE”)부모 클래스에 자식 테이블 구분 컬럼 지정@DiscriminatorValue(“XXX”)자식 클래스에 구분 컬럼..
연관관계 매핑 고려사항 3가지다중성1:n, n:m(실무에서 x), n:1, 1:1단방향, 양방향테이블: 외래키 하나로 양쪽 조인 가능(방향 개념 x)객체 : 참조용 필드가 있어야 참조 가능(방향 개념 o)연관관계 주인테이블 : 외래키 하나로 두 테이블이 연관관계 맺음객체 : 양방향 관계는 A→B, B→ A와 같이 참조가 2개 = 외래키 관리할 곳(연관관계 주인) 필요 다대일(N:1)N 쪽이 외래키 관리(연관관계 주인)다대일 단방향@ManyToOne + @JoinColumn(name = "TEAM_ID")다대일 양방향 : 외래키 있는 쪽이 연관관계 주인, 항상 서로 참조 필수@ManyToOne + JoinColumn(name = "TEAM_ID") → 연관관계 주인@OneToMany(mappedBy="te..

연관관계 비교테이블외래키(FK) 사용항상 양방향 관계 → JOIN Member findMember = em.find(Member.class, member.getId());Long findTeamId = findMember.getTeamId();Team findTeam = em.find(Team.class, findTeamId);객체참조 사용항상 단방향 관계 → a.b (양방향 필요 시 2개의 단방향으로 활용)Member findMember = em.find(Member.class, member.getId());Team findTeam = findMember.getTeam();단방향 연관관계@ManyToOneN:1 매핑해당 클래스가 연관관계 주인@JoinColumn(name="외래키 이름")외래키 매핑 시..
@Entity테이블과 매핑할 클래스에 사용JPA가 관리기본 생성자 필수@Table엔티티와 매핑할 테이블 지정스키마 자동 생성애플리케이션 실행 시점에 데이터베이스 테이블 자동 생성개발계에서만 사용 권장@Column필드-컬럼 매핑@Id기본 키 매핑@GeneratedValue(strategy = GenerationType.~) : 자동 생성 전략IDENTITY : 데이터베이스에 위임, 순서대로 값 증가SEQUENCE : 시퀀스 사용, @SequenceGenerator로 시퀀스 생성TABLE : 키 생성 전용 테이블 사용, @TableGenerator로 테이블 생성AUTO : 데이터베이스에 따라 IDENTITY/SEQUENCE/TABLE 중 자동 선택
JPA객체를 자바 컬렉션에 저장하듯이 DB에 저장영속성 컨텍스트Entity를 영구 저장하는 환경(EntityManager를 사용하여 저장)1차 캐시1차 캐시에 저장된 entity를 find() 하면 DB조회 없이 바로 반환동일성(idnetity) 보장같은 트랜잭션 내부에서는 같은 엔티티 반환쓰기 지연DB 조작들을 트랜잭션 커밋 순간 한번에 수행변경 감지(Dirty Checking)flush 시점에 엔티티 변경사항을 자동으로 UPDATE SQL 생성하여 반영스냅샷 활용지연로딩(lazy loading)객체가 실제 사용될 때 로딩Entity 생명주기비영속(new/trasient)JPA에서 관리되지 않는 상태 (new로 객체만 생성)영속(managed)영속성 컨텍스트에서 관리되는 상태(persist(), fin..