ORM 3

4. 엔티티 매핑

엔티티 매핑 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하며 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션이 필수이다. 주의 기본 생성자는 필수(파라미터가 없응 public 또는 protected 생성자) 리플렉션같은 다양한 기술을 사용하기 때문에 기술 스펙으로서 기본 생성자가 필요함 final 클래스, enum, interface inner 클래스 사용 x 저장할 필드에 final 사용 X @Entity 속성정리 @Entity(name): JPA에서 사용할 엔티티 이름을 정할 때 사용함. 기본값: 클래스 이름을 사용하며 가급적 기본값을 사용해야 헷갈리지 않는다. @Table: name: 매핑할 테이블 이름(기본값: 엔티티 이름 사용..

3. 영속성 관리 - 내부 동작 방식

영속성 관리 - 내부 동작 방식 영속성 컨텍스트 영속성 컨텍스트 : "엔티티를 영구 저장하는 환경"이라는 뜻. EntityManager.Persist(entity); EntityManager를 통해서 DB에 저장하는 것이 아닌 영속성 컨텍스트에 객체를 영속화 시키는 개념이다. 영속성 컨텍스트는 논리적 개념으로 눈에 보이지 않는다. EntityManager를 사용하게 되면 객체 내부에 1:1로 영속성 컨텍스트가 존재하게 된다. 엔티티의 생명주기 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed): 영속성 컨텍스트에 관리되는 상태 em.persist(member)하여 영속성 컨텍스트에 객체가 영속 상태로 변환. 준영속(detached): 영속성 컨텍스트에..

2. JPA 시작하기

JPA 시작하기 데이터베이스 방언 JPA는 특정 데이터베이스에 종속 X MySQL, Oracle 등 각 데이터베이스의 문법에 따르도록 설정하여 사용할 수 있음. JPA가 방언(DB문법이 JPA입장에서)을 해석하여 사용해줌. javax와 hibernate의 차이점 javax는 java 진영 표준으로 jpa에 정의된 패키지이기 때문에 hibernate가 아닌 다른 구현체를 사용하더라도 그대로 사용이 가능하다. 하지만, hibernate.dialect 처럼 hibernate로 시작되는 패키지들은 hibernate에 종속적이므로 hibernate에서만 사용 가능하다. 애플리케이션 개발 JPA 구동 방식 Persistence 클래스에서 META-INF/persistence.XML 설정 정보 파일을 읽음. Enti..