
연관관계가 필요한 이유 클래스에서 참조 대신에 외래키 식별자를 직접 다룸(teamId) @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; // 참조없이 외래키 사용 … } @Entity public class Team { @Id @GeneratedValue private Long id; private String name; … } //팀 저장 Team team = new Team(); team.setName("TeamA"); em.persist(team); //회원 저..

객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리해서 엔티티라고 부름 JPA를 사용해서 DB의 테이블과 매핑할 클래스는 필수로 붙혀야함 기본 생성자 필수로 있어야 함 final 클래스, enum, interface, inner 클래스 사용X 저장할 필드에 final 사용X @Table 엔티티와 매핑할 테이블 지정함 속성 name: 매핑할 테이블 이름 catalog: 데이터베이스 catalog 매핑 schema: 데이터베이스 schema 매핑 uniqueConstraints(DDL): DDL 생성 시에 유니크 제약 조건 생성 데이터베이스 스키마 자동 생성 DDL을 애플리케이션 실행 시점에 자동 생성 속성 create: 기존테이블 삭제 후 다시 생성 (DROP + CREATE) ..

영속성 컨텍스트 엔티티를 영구 저장하는 환경 EntityManager.persist(entity);를 통해 영속성 컨텍스트에 접근 논리적인 개념(보이지 않음) EntityManger 안에 영속성 컨텍스트가 있음 1차캐시를 영속성 컨텍스트로 보면 됨 엔티티의 생명주기 비영속 jpa와 상관없이 객체만 생성한 상태 영속 영속성 컨텍스트에 속한 상태 준영속 영속성 컨텍스트에서 저장되었다가 분리 삭제 영속성 컨텍스트에서 삭제된 상태 1차 캐시 @Id의 값이 key값이 되고 엔티티 자체가 value가 됨(Map 형태) DB에 값을 조회할 경우, 1차 캐시에서 먼저 찾고 캐시에 값이 없으면 DB에서 값을 찾음 한 트랜젝션 안에서의 캐시여서 데이터 조회할 때 큰 이점은 없음 영속 엔티티의 동일성 보장 자바 컬렉션처럼 ..