본문 바로가기

웹 프로그래밍/JPA

(19)
엔티티 매핑 객체와 테이블 매핑: @Entity, @Table @Entity가 붙은 클래스는 JPA가 관리하는 엔티티 -기본 생성자 필수 (@NoArgConstructor 사용하면 편리) -final , enum, interface, inner 클래스 사용 X 데이터 베이스 스키마 자동 생성 -DDL을 애플리케이션 실행 시점에 자동 생성 -데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 -개발용임 (운영에서는 직접 만들어야함) 필드와 컬럼 매핑 -@Column: 컬럼 매핑 -insertable:등록 가능 여부 -updatable:수정 가능 여부 -nullable: not null 조건 -unique: 유니크 제약조건 -columnDefinition: 특정방언에 종속적인 정보 -@Temporal: ..
영속성 관리 영속성 컨텍스트 -엔티티를 영구 저장하는 환경 -논리적인 개념 -엔티티 매니저를 통해서 영속성 컨텍스트에 접근 -엔티티 매니저와 영속성 컨텍스트가 1:1 대응 엔티티의 생명주기 -비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 새로운 형태 -영속(managed): 영속성 컨텍스트에 관리되는 상태 -준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태 -em.detach(): 특정 엔티티만 준영속 상태로 전환 -em.clear(): 영속성 컨텍스트를 완전히 초기화 -em.close(): 영속성 컨텍스트를 종료 -삭제(removed): 삭제된 상태 영속성 컨텍스트의 이점 -1차 캐시(DB가 아니라 먼저 1차 캐시에서 조회) -동일성(identity) 보장(1차 캐시) ..
JPA(Java Persisitence API) JPA -자바 진영의 ORM 기술표준 ORM -Object relational mapping(객체 관계 매핑) -객체는 객체대로 관계형 DB는 관계형 DB로 설계 -ORM 프레임 워크가 중간에서 매핑 -JPA는 애플리케이션과 JDBC사이에서 동작 -JPA는 표준 명세(인터페이스의 모음): 일반적으로 구현체로 하이버네이트를 씀 왜 JPA? -SQL 중심 개발 -> 객체 중심 개발 -생산성 -유지 보수 -패러다임 불일치 해결(객체와 테이블) -성능 -데이터 접근 추상화와 벤더 독립성 JPA와 패러다임 불일치 해결 -1. 상속(JPA가 알아서 join 해줌) -2. 연관관계(객체 안의 객체) -3. 객체 그래프 탐색(엔티티 참조 가능, 신뢰 가능) ※ 엔티티(Entity): JPA가 관리하는 객체 -4. 비교..