SPRING/JPA

    06. 엔티티 매핑(2) - 기본 키 매핑

    기본 키 매핑은 중요한 요소들이 몇몇 있어 따로 챕터를 배정해봤습니다. 기본 키 매핑 '@Id'를 통해 매핑을 합니다. 직접 할당 VS 자동생성 DB는 무척이나 방대하기 때문에 기본 키를 직접 할당하기보다는 자동으로 할당하는 것을 선호합니다. 직접 할당 기본키 필드에 매핑을 의미하는 '@Id'만을 입력하고 데이터 생성 시 기본키를 직접 입력하면 됩니다. @Id private Long id; 자동생성 기본키 필드에 '@GeneratedValue'를 입력하고, 속성 값에 따라 전략이 달라집니다. // Case 1 @Id @GeneratedValue(starategy = GenerationType.AUTO) private Long id; // Case 2 @Id @GeneratedValue(starategy ..

    05. 엔티티 매핑(1)

    이번에는 객체를 생성하고 매핑 차례입니다! 엔티티 생성과 매핑 JPA는 JDBC와 데이터베이스를 매핑하는 역할이 핵심입니다. 그렇기 때문에 엔티티와 테이블을 정확히 매핑하는 것이 가장 중요합니다. @Getter // Lombok Annotation @Entity @Table(name="MEMBER") public class Member { @Id @Column(name = "ID") private long id; private String name; @Enumerated(EnumType.STRING) private Level level; // 자바8부터 다음으로 대체 // private LocalDateTime createdAt; @Temporal(TemporalType.TIMESTAMP) private..

    04. 영속성 관리(2) - 영속성 컨텍스트의 이점

    영속성 컨텍스트의 이점 이번에는 영속성 컨텍스트를 사용함으로써 얻을 수 있는 추가 이점에 대해서 알아봅시다. 1. 1차 캐시 기존의 JDBC에서 저장된 데이터를 읽으려고 합니다. 그러기 위해서는 당연히 SELECT 쿼리를 DB에 전송해야 합니다. 그럼 JPA에서는 어떨까요? 데이터를 읽는 코드를 짜 봅시다. static void cacheTest() { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); //비..

    03. 영속성 관리(1) - 영속성 컨텍스트

    영속성 관리 JPA에서 가장 중요한 것은 바로 '객체(엔티티)와 관계형 데이터베이스 간 매핑'과 '영속성 관리'입니다. 이번 시간은 영속성 관리에 대해 알아보겠습니다. 1. JPA의 전체적인 흐름 EntityManagerFactory JPA를 시작하려면 먼저 영속성 유닛(persistence.xml)을 파라미터로 받는 'EntityManagerFactory'를 생성해야 합니다. 'createEntityManagerFactory( )'는 파라미터와 일치하는 영속성 유닛 파일 이름(persistenceUnitName)을 검색하고, 그 설정정보를 참고하여 'EntityManagerFactory'를 생성합니다. 'EntityManagerFactory'의 생성 비용은 굉장히 큽니다. 그러므로 애플리케이션 전체에서..

    02. 영속성 유닛(Persistence.xml)

    JPA는 자바 애플리케이션과 JDBC 사이에서 객체를 관계형 데이터베이스에 매핑(ORM)을 시켜주는 기능을 수행합니다. 이를 위해서는 사전작업이 필요합니다. persistence.xml 설정 다음은 설정 정보 입력입니다. JPA는 persistence.xml을 사용해서 필요한 설정 정보를 관리합니다. 이러한 설정정보를 영속성 유닛이라고 합니다. 이 파일이 'META-INF/persistence.xml' 클래스 패스 경로에 있으면 별도의 설정 없이 JPA가 인식할 수 있습니다! 하나하나 살펴보도록 합시다! 헤더