java persistence API6 4-1. Entity 매핑 (1) Entity와 테이블을 매핑하기 위해서 사용되는 어노테이션들에 대해서 알아보자. 1. @Entity JPA를 사용해서 테이블과 매핑하고자 하는 클래스에는 @Entity 어노테이션이 필수로 붙어야 한다. 속성 기능 기본값 name JPA에서 사용할 Entity 이름을 지정한다. 보통 기본값인 클래스 이름을 사용한다. 만약 다른 패키지에 동일한 이름의 Entity 클래스가 있다면 이름을 지정해 충돌을 방지한다. 클래스 이름을 그대로 사용. JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하기 때문에 기본 생성자는 필수적으로 가져야 한다. (전달인자 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 fi.. 2021. 6. 9. 3-3. Flush와 준영속 1. Flush 플러시는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것을 말한다. (영속성 컨텍스트에 보관된 엔티티를 지우는 것이 아님) * 플러시 실행 과정 1. 변경 감지가 동작, 영속성 컨텍스트에 있는 모든 Entity 스냅샷과 비교해 수정된 Entity를 찾는다. 수정된 Entity는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록한다. 2. 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송한다. * 플러시 방법 1. em.flush()를 직접 호출 테스트나 다른 프레임워크와 JPA를 함께 사용할 때를 제외하고 거의 사용하지 않음. 2. 트랜잭션 커밋 시 플러시 자동 호출 DB에 변경 내용을 SQL로 전달하지 않고 트랜잭션만 커밋하면 어떤 데이터도 DB에 반영되지 않는다. 그렇기에 트랜.. 2021. 6. 7. 3-2. 영속성 컨텍스트의 특징 1. 영속성 컨텍스트의 특징 1. 식별자 값 영속성 컨텍스트는 엔티티를 식별자 값(@Id로 테이블의 기본 키와 매핑한 값)으로 구분한다. 그러므로 영속 상태에 있는 엔티티는 반드시 식별자 값을 가져야 한다. 2. 데이터베이스 저장 JPA는 보통 Transaction을 commit하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터베이스에 반영하며, 이를 Flush라고 한다. 3. 장점 1차 캐시 동일성 보장 Transaction을 지원하는 쓰기 지연 변경 감지 지연 로딩 2. Entity 조회 영속성 컨텍스트(PC, Persistence Context)는 내부에 1차 캐시를 가지고 있어 영속 상태의 엔티티가 모두 이곳에 저장된다. PC안에 [Key: @Id로 매핑된 식별자, Value: 엔티티 인스턴.. 2021. 5. 31. 3-1. 영속성 컨텍스트와 Entity 생명주기 1. 영속성 컨텍스트 (Persistence Context) Entity를 영구적으로 저장하는 공간 및 환경이라고 생각하면 된다. EM(Entity Manager)는 Entity를 저장하거나 조회하면 EM은 PC(Persistence Context)에 Entity를 보관하고 관리한다. PC는 EM을 생성할 때 하나 만들어진다. PC에 접근하고 관리하기 위해서는 EM을 통해야 한다. 2. Entity의 생명주기 1. 비영속 Entity 객체를 생성한 후 아직 저장하지 않은 상태이다. 따라서, PC와 DB와는 전혀 관련이 없다. Member member = new Member(); member.setId("sample1"); member.setUserName("test1"); 2. 영속 EM을 통해서 Ent.. 2021. 5. 26. 2. JPA 설정 및 어플리케이션 개발 여의도에 들려 IFC Mall에서 멕시코 음식과 함께 아주 만족스러운 저녁 식사를 마치고 귀가해 작성하는 게시글이다. 오늘부터는 본격적으로 JPA를 사용해 개발을 하기 위한 설정과 원리?를 알아보고자 한다. 1. persistence.xml 설정 JPA는 persistence.xml 파일을 통해 필요한 설정 정보를 관리한다. META-INF/persistence.xml 클래스 패스 경로에 있다면 별도의 설정 없이 JPA가 인식할 수 있다. 설정 파일은 위와 같이 persistence로 시작한다. 여기서 xml 네임스페이스(xmlns)와 버전을 지정한다. 영속성 유닛 (persistence unit)은 일반적으로 연결할 데이터베이스당 하나의 영속성 유닛을 등록한다. 위의 4가지 속성은 JPA 표준 속성으로.. 2021. 5. 24. 1. JPA란 무엇인가?! JPA란? Java Persistence API로, 자바 진영의 ORM 기술 표준을 말한다. JPA는 애플리케이션과 JDBC 사이에서 동작한다. ORM이란? 1. Object-Relation Mapping 이름 그대로 객체와 관계형 데이터베이스를 매핑함을 의미한다. 2. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자를 대신해 해결해준다. 3. 개발자는 객체 측면에서는 정교한 객체 모델링을 할 수 있게 되고, 관계형 데이터베이스는 데이터베이스에 맞도록 모델링을 할 수 있다. 그리고 이 둘을 매핑하는 방법만 ORM 프레임워크에게 알려주면 된다. -> 개발자는 데이터 중심의 관계형 데이터베이스를 사용해도 객체지향 애플리케이션 개발에 집중할 수 있게 된다. JPA는 자바 ORM 기.. 2021. 5. 5. 이전 1 다음