김영한님의 자바 ORM 표준 JPA 프로그래밍 강의를 들으며 공부한 내용을 정리한 글입니다. 객체와 테이블 매핑 JPA를 사용해 어떤 테이블과 매핑할 클래스는 @Entity 애너테이션을 필수적으로 명시해줘야 한다. 즉, @Entity가 붙은 클래스는 JPA가 관리하는 클래스라는 것을 나타낸다. @Entity public class Member { ..... ..... } Entity 클래스를 만들 때 몇 가지 주의할 점이 있는데, 주의 사항은 다음과 같다. 주의사항 public 혹은 protected 레벨의 파라미터가 없는 기본 생성자는 필수이다. final 클래스, enum, interface, inner 클래스는 Entity로 사용할 수 없다. 값을 담는 필드에 final을 사용하면 안 된다. @En..
김영한님의 자바 ORM 표준 JPA 프로그래밍 강의를 들으며 공부한 내용을 정리한 글입니다. JPA의 내부 동작 방식을 이해하기 위한 중요한 개념이 있다. 바로 영속성 컨텍스트이다. 영속성 컨텍스트 영속성 컨텍스트는 JPA를 이해하는데 가장 중요한 용어로써 "엔티티를 영구 저장하는 환경"이라는 뜻이다. 우리는 아래와 같이 EntityManager를 통해 값을 영속화시킬 수 있다. EntityManager.persist(entity); 하지만 실제 EntityManager는 값을 DB에 저장하는 것이 아니라 영속성 컨텍스트에 저장한다. 눈에 보이지 않는 논리적 개념으로 하나의 EntityManager는 하나의 영속성 컨텍스트를 가지고 있다.(Spring Data는 N:1) 영속성 컨텍스트의 라이프 사이클 ..
김영한님의 자바 ORM 표준 JPA 프로그래밍 강의를 들으며 공부한 내용을 정리한 글입니다. 1. JPA란? JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. ORM(Object Realational Mapping)이란? 객체와 RDBMS 사이를 중간에서 매핑해주는 객체 관계 매핑 기술이다. JPA는 애플리케이션과 JDBC 사이에서 동작하며 Java의 객체와 RDBMS 사이를 매핑하는 역할을 한다. 프로그래머가 Entity를 작성하면 JPA는 이를 분석해서 자동으로 필요한 SQL을 생성한다. 따라서 프로그래머는 조금 더 객체 지향적인 관점에서 프로그래밍을 할 수 있게 된다. 2. JPA가 왜 필요할까? 기존의 SQL 중심의 개발에서는 객체에 필드를 추가하면 그와 관련된 ..