전체 글 (47) 썸네일형 리스트형 JPA Basic - 프록시, CASCADE, 고아객체 1. 프록시 ◍ 기초 ○ em.find = 데이터 베이스 통해서 실제 엔티티 객체 조회 ○ em.getReference(): 데이터 베이스 조회를 미루는 가짜 엔티티 조회(프록시) ○ 특징 ◼ 실제 클래스를 상속 받아서 만들어짐. ◼ 실제 클래스와 겉 모양이 같다. ◼ 사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨(이론상) ◼ 프록시 객체는 실제 객체의 참조(target)를 보관 ◼ 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출 ○ 프록시 객체의 초기화 Member member = em.getReference(Member.class, "id1"); member.getName() //1. getName() //2. 영속성 컨텍스트에 초기화 요청 //3. DB조.. JPA Basic - 상속관계 매핑 1. 상속관계 매핑 ◍ 관계형 데이터 베이스는 상속관계 없음 ◍ 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사. -> 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 ◍ 방법 ○ 각각 테이블로 변환 -> 조인전략 (정석 및 깔끔한 설계 - 그러나 성능 이슈 있을 수도) ◼ DTYPE 으로 구분하여 JOIN ◼ 장점: 테이블 정규화. 외래키 참조 무결성 제약조건 활용가능/저장공간 효율화 ◼ 단점: 조회시 조인 많이 사용/ 성능 저하/ 조회 쿼리가 복잡/ 데이터 저장시 INSERT 2번 호출 ○ 통합 테이블로 변환 -> 단일 테이블 전략 (기본) ◼ 장점: 조인이 필요 없으므로 일반적으로 조회 성능 빠름/ 조회 쿼리 단순함 ◼ 단점: 자식 엔티티가 매핑한 컬럼 모두 null 허용/ .. JPA Basic - 엔티티 매핑 1. 객체와 테이블 매핑: @Entity, @Table ◍ @Entity ○ JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 ○ 주의 ◼ 기본생성자 필수(파라미터가 없는 public 또는 protected 생성자) ◼ final 클래스, enum, interface, innner 클래스에는 사용X ◼ 저장할 필드에 final 사용 X ○ 속성: name ◼ 기본값: 클래스의 이름을 그대로 사용. ◼ 같은 클래스의 이름이 없으면 가급적 기본값 사용. ◍ @Table ○ 엔티티와 매핑할 테이블 지정 ◼ name: 매핑할 테이블 이름(엔티티 이름을 사용) ◼ catalog: 데이터베이스 catalog 매핑 ◼ schema: 데이터베이스 schema 매핑 ◼ uniqueConstraints(DDL.. 이전 1 ··· 11 12 13 14 15 16 다음