
관계형 데이터베이스에서 데이터를 다루고 관리하려면 SQL을 작성해야 한다. JPA를 사용하기 전의 자바 애플리케이션에서는 보통 JDBC API를 사용해서 SQL을 데이터베이스에 전달하는 코드를 직접 작성했다.이해를 위해 상품을 CRUD하는 기능을 개발한다고 해보자. 먼

JPA의 내부구조가 어떻게 동작하는지 알아보자. JPA를 이해하는데 있어서 가장 중요한 2가지를 말한다면, 객체랑 관계형 DB를 어떻게 매핑하느냐와 영속성 컨텍스트를 뽑을 수 있다. 웹 애플리케이션을 개발한다고 해보자. 그럼 엔티티 매니저 팩토리를 통해서 각각의 고객의

JPA에서 가장 중요한 일은 엔티티와 테이블을 정확하게 매핑하는 것이다. 그에 따라 매핑 애노테이션을 숙지할 필요가 있다. 일단 @Entity 애노테이션에 대해 알아보자.@Entity가 붙은 클래스는 JPA가 관리하는 객체로, 엔티티라고 한다. 스펙상 기본 생성자가 필

엔티티들은 대부분 다른 엔티티와 연관 관계가 있다. 그렇기 때문에 객체와 테이블 연관 관계의 차이를 이해해야 하는데, 객체는 참조값을 통해 쭉쭉 찾아갈 수 있지만, 테이블에서는 외래키 값을 통해 찾아가야 한다. 여기서는 객체의 참조와 테이블의 외래키를 매핑하는 것이 목

먼저 연관 관계가 있는 두 엔티티에 대해 일대일 관계인지 일대다 관계인지 다중성을 판단해야 한다. 그리고 한쪽만 참조하는 단방향 관계인지 서로 참조하는 양방향 관계인지 판단하고, 만약 양방향 관계라면 누가 그 연관 관계의 주인인지를 정해야 한다.알다시피 테이블의 다대일

관계형 DB에는 상속이라는 개념이 없다. 대신, 아래와 같이 슈퍼/서브 타입 관계를 데이터베이스에 매핑하는 방식으로 객체의 상속 개념을 표현한다. JPA 상속 관계 매핑이 바로 이 슈퍼/서브 타입 모델을 DB 테이블 구조로 변환하는 일을 한다.슈퍼/서브 타입 논리 모델

엔티티를 조회할 때 연관된 엔티티들을 항상 사용하는 것은 아닐 것이다. 예를 들어, Member를 조회할 때 Team도 함께 조회할 수도, 그럴 필요가 없는 상황일 수가 있다.보다시피 printUserAndTeam() 메서드는 memberId로 회원 엔티티를 찾아서 회