JPA란?JPA는 Java Persistence API의 약자이다. 일단 약자만 봤을땐 느낌이 오지 않는다.😅Persistence? 영속성? 일단은 잘 모르겠으니 패스. 다음으로는 API이다. 즉, 인터페이스다.그러므로 JPA 기술을 사용하기 위해서는 이 인터페이스를
이번 글에서는 JPA의 장점에 대해 알아보고자 한다. JPA의 장점에 대해 알기 위해선 먼저 JPA를 사용하지 않았을 때의 문제점에 대해 이해해야한다. 대부분의 기술이 그러하듯 JPA 역시 기존의 문제점들을 해결해주기 때문이다. JPA를 거의 도입하지 않던 시절 대
JPA의 기초이면서도 가장 중요한 개념인 영속성 컨텍스트에 관하여 정리해보자.모든 예제는 JPA 구현체 중 가장 많이 사용되는 Hibernate를 기준으로 설명한다.먼저 영속성 컨텍스트를 개념적으로 말해보자면엔티티를 영구저장 하는 환경하지만 역시 바로 와닿진 않는다.일
저번편에서는 영속성 컨텍스트에 구체적으로 다루진 않았지만 코드와 결과를 보며 간접적으로 영속성 컨텍스트의 존재를 알았다. 이번엔 영속성 컨텍스트와 엔티티 등록의 메커니즘에 대해 자세하게 알아보자.1편에서 사용했던 코드를 다시 가져왔다.Member 객체를 만들고 Sett
엔티티 등록에 이은 엔티티 조회를 알아보자!등록편에서 잠시 알아봤지만 다시 한번 기억을 되살려보자면.. 우리가 JPA를 사용하여 데이터를 테이블에 저장하고싶을 때 사용했던 persist() 메소드는 호출 순간 곧바로 INSERT문을 DB에 날려주지 않는다.엔티티 객체를
영속성 컨텍스트의 마지막 남은 특징 변경 감지(Dirty Checking)에 대해 알아보고 영속성 컨텍스트는 이것으로 마무리하고자 한다.먼저 변경 감지에 대해 알아볼건데, 바로 아래 코드를 보자(Member 테이블에는 id(PK)가 1이고 name이 "member1"인
JPA는 기본적으로 객체와 테이블 간의 매핑으로 모든 작업을 시작한다.이번 편에서는 가볍게 이런 매핑을 도와주는 몇가지를 정리해보고자 한다.(인프런 김영한님의 JPA강좌 강의자료를 보고 다시 한번 개인적으로 정리하는 용도입니다.)클래스 위에 붙이면 그때부터 이 클래스는
JPA에서 사실상 가장 중요한것은 연관관계 매핑이다. 테이블과 컬럼은 결국 엔티티와 필드와 그대로 매핑하기 때문에 매핑방법만 알고 있다면 어렵지 않지만, DB와 JPA는 테이블간의 관계를 표현하는 패러다임에서 큰 차이가 있기 때문에 나 역시 JPA를 처음 접하고 이 부
이전 글에서는 비교적 간단한(?) 단방향 연관관계에 대해 정리해보았다. 이번 글에서는 정~말로 더 중요하고 헷갈리는 양방향 연관관계에 대해 알아보고자 한다. 일단 이전과 동일한 시나리오를 다시 살펴보자. > \- 회원과 팀이 있다. \- 회원은 하나의 팀에만 소속될
양방향 연관관계를 이용할 때 가장 많이 하는 실수에 대해 알아보자.이전 글에서 위와 같은 연관관계를 양방향 연관관계라고 하였고, 이 때 "외래키가 있는 곳을 주인으로 정해라" 라는 규칙에 따라 Member의 team을 연관관계의 주인으로 결정했다.이 때 다음과 같은 코
JPA에서 객체를 조회하는 두가지 메소드가 있다.(두 메소드 전부 EntityManager에 정의된 메소드이다.)데이터베이스를 통해서 실제 엔티티 객체 조회데이터베이스 조회를 미루는 가짜 엔티티(프록시) 객체 조회이 중 getReference() 메소드는 프록시 객체
이전 글에서 Proxy에 대해 살펴보았다. Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 위와 같은 상황을 가정하고 엔티티를 작성해보자! Entity는 위와