JPA 15

엔티티 매핑

JPA를 사용하는 데 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 것이다. 다양한 매핑 어노테이션에 대해 알아본다. ​ @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야한다. 속성 기능 기본값 name JPA클래스에서 사용할 엔티티 이름을 지정한다. 설정하지 않으면 클래스 이름을 그대로 사용한다. · final클래스, enum, interface, inner 클래스에는 사용할 수 없다. · 저장할 필드에 final을 사용하면 안된다. ​ @Table @Table은 엔티티와 매핑 할 테이블을 지정한다. 속성 기능 기본값 name 매핑할 테이블 이름 엔티티 이름을 사용한다. catalog catalog 기능이 있는 데이터베이스에서 catalog를 매핑한..

JPA 2023.04.27

영속성 관리 (2)

플러시 플러시는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영한다. 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷과 비교해서 수정된 엔티티를 찾는다. 수정된 엔티티는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록한다. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다.(등록, 수정, 삭제 쿼리) ​ 영속성 컨텍스트를 플러시 하는 방법은 3가지다. em.flush() 를 직접 호출한다. 트랜잭션 커밋 시 플러시가 자동 호출된다. JPQL 쿼리 실행 시 플러시가 자동 호출된다. em.persist(memberA); em.persist(memberB); em.persist(memberC); //중간에 JPQL 실행 query = em.createQuery("select m ..

JPA 2023.04.27

영속성 관리 (1)

JPA가 제공하는 기능 ·엔티티와 테이블을 매핑하는 설계 부분 ·매핑한 엔티티를 실제 사용하는 부분 ​ 이번 글에서는 매핑한 엔티티를 엔티티 매니저를 통해 어떻게 사용하는지 알아보겠다. ​ 엔티티매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 한다. 이름 그대로 엔티티를 관리하는 관리자다. 개발자 입장에서 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스로 생각하면 된다. 참고로 내용 중에 구현과 관련된 부분들은 하이버네이트를 기준으로 이야기할 것이고 다른 JPA구현체도 크게 다르지는 않을 것이다. ​ 엔티티 매니저 팩토리와 엔티티 매니저 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성한다. ​ Ent..

JPA 2023.04.27

JPA 시작

JPA를 사용해서 테이블 하나를 등록/수정/삭제/조회하는 간단한 JPA 애플리케이션을 만들어본다. JPA는 필요한 라이브러리도 많고 데이터베이스도 필요하다. 그리고 자바 IDE(Integrated Development Environment)없기 개발하기 힘들다. JPA를 사용하기 위한 과정 1) 이클립스 설치와 프로젝트 불러오기 IDE는 가장 많은 자바 개발자들이 사용하는 이클립스를 설치한다. 이때 될 수 있으면 Eclipse for Java EE Developers 패키지로 내려받는 것을 권장한다. -> JPA로 개발할 때 편리한 도구들이 지원됨. ​ 프로젝트를 import해서 불러온다. 메이븐 프로젝트를 사용할것임. 프로젝트를 처음 불러오면 메이븐 저장소에서 라이브러리를 내려받기 때문에 1~10분정도..

JPA 2023.04.27

JPA 소개

JPA의 등장 초기에 JDBC API를 직접 사용해서 코딩 : 애플리케이션의 비즈니스 로직보다 SQL과 JDBC API를 작성하는 데 더 많은 시간을 보냄. ​ MyBatis, JdbcTemplate 같은 SQL Mapper를 사용 : JDBC API 사용 코드를 많이 줄일 수 있었음. ​ 하지만 여전히 등록, 수정, 삭제, 조회(CRUD)용 SQL을 반복해서 작성해야했음 -> 지루하고 비생산적임. ​ JPA는 지루하고 반복적인 CRUD SQL을 알아서 처리해줄 뿐만 아니라 객체 모델링과 관계형 데이터베이스 사이의 차이점도 해결해주었다. ​ 객체와 관계형 데이터베이스 간의 차이를 중간에서 해결해주는 ORM(Object-Relational Mapping)프레임워크 -> JPA는 자바 진영의 ORM 기술 표..

JPA 2023.04.27