Development Memories/JPA 5

【JPA】기본 키(Primary Key) 매핑 정리

JPA의 기본 키 매핑에 대해서 공부한 내용을 간략히 기록해 봅니다. (기본 내용 출처는 자바 ORM 표준 JPA 프로그래밍 책 입니다.) JPA가 제공하는 데이터 베이스 기본 키 생성 전략은 아래와 같습니다. 직접 할당 기본 키를 어플리케이션에서 자동으로 직접 할당 한다. em.persist()를 호출하기 전에 어플리케이션에서 직접 식별자 값을 할당해야 한다. 만약 식별자가 없으면 예외가 발생한다. 참조 소스 - 책에 기재되어 있는 예제 소스로 상세한 내용은 별도로 찾아보시길 권장 합니다. @Id @Column(name = "id") private String id; Baord board = new Board(); board.setId("id1") // 기본 키 직접 할당 em.persist(board..

【JPA】엔티티 매핑(Entity Mapping) - @Entity, @Table

객체와 테이블 맵핑을 담당하고 있는 @Entity 와 @Table 어노테이션에 대해서 공부한 내용을 정리해 봅니다. (기본 내용 출처는 자바 ORM 표준 JPA 프로그래밍 책 입니다.) @Entity JPA에서 테이블과 매핑할 클래스에는 @Entity 어노테이션을 붙혀야 사용할수 있는데, 어노테이션을 사용하게 되면 JPA에서 자동 관리를 하게 됩니다. 속성 name : JPA에서 사용할 엔티티 이름 지정, 지정하지 않으면 클래스 명을 사용 사용상 주의 사항은 아래와 같습니다. 기본 생성자는 필수로 있어야 합니다. JPA에서 엔티티 객체를 생성할 때 기본 생성자를 사용하므로 반드시 존재해야 합니다. 그러나 자바는 생성자가 하나도 없으면 자동으로 생성하기 때문에 별도로 만들 필요는 없지만 기본적으로 숙지해 ..

【JPA】플러시(Flush)

JPA의 플러시(flush)에 대해서 공부한 내용을 정리해 알아보겠습니다. (기본 내용 출처는 자바 ORM 표준 JPA 프로그래밍 책 입니다.) 플러시는 영속성 컨텍스트의 변경 내용을 데이터베이스에 적용하는 작업을 말합니다. 플러시를 실행하게 되면 아래와 같은 작업이 발생하게 되는데, 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷과 비교해서 변경된 엔티티를 찾아 내서 수정 쿼리를 만들어 쓰기 지연 SQL저장소에 등록하게 됩니다. 쓰기 지연 SQL 저장소의 쿼리를 데이터 베이스에 전송하여 적용 합니다. ▶ 영속성 컨텍스트를 플러시하는 방법에는 3가지가 있는데 em.flush()를 직접 호출 영속성 컨텍스트를 강제로 플러시 하는 방법으로 테스트나 다른 JPA를 함께 사용할때를 제외하고는 사용하지 않는 것이 좋..

【JPA】Persistence Context(영속성 컨텍스트) 란 무엇인가?

JPA에서 중요한 부분이라 학습했던 부분을 그림으로 그려서 정리해 보았습니다. Persistence Context(영속성 컨텍스트)는 엔티티 매니저를 생성할 때 하나가 생성이되고 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 및 관리를 할수 있습니다. 여러 엔티티 매니저가 하나의 영속성 컨텍스트를 접근하거나 관리할 수 도 있습니다. EntityManager로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리하게 됩니다. 예를 들어, 엔터티에 대한 "persist() or merge()"을 수행하여도 그 시점에서는 데이터베이스에 기록되지 않고 「이 엔티티는 데이터베이스에 새롭게 Insert 하는 데이터」 라고 표시하고 영속성 컨텍스트에 저장할 뿐입니다. 이 개체의 "영속..

【JPA】Persistence.xml 설정 방법

JPA는 Persistence.xml을 이용해서 관련 정보를 관리합니다. 파일의 위치는 아래와 같이 META-INF 폴더안에 있으면 별도의 설정없이도 인식이 가능합니다. 아래 코드는 「김영한님의 자바 ORM 표준 JPA 프로그래밍」의 샘플 소스를 인용하였습니다. 코드를 하나씩 보면 XML의 네임 스페이스와 JPA의 버전을 명시하는 합니다. 위 코드에서는 JPA 2.1을 명시하고 있습니다. JPA 설정은 persistence-unit(영속성 유닛)라는 것부터 시작을 하는데 일반적으로 연결할 데이터 베이스당 하나의 영속성 유닛을 등록하게 됩니다. persistence-unit에는 하나의 고유한 이름을 설정해야하는데, 위 코드에서는 JPABOOK를 설정한 상태 입니다. 각 프로퍼티에 대해서 살펴보면 jdbc...

반응형