본문 바로가기

Spring/JPA

(3)
JPA Repository 메서드 Repository란? 스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공함 JpaRepository 인터페이스를 상속하면 된다. 이때 사용할 Entity와 ID 값이 들어가게 된다 (JpaRepository // Member Entity의 Repository public interface MemberRepository extends JpaRepository { } 위와 같이 상속 받으면 위의 인터페이스는 다음과 같은 기능을 제공하게 된다. 메서드 기능 save() (저장) 엔티티를 저장함 findOne() (검색) pk로 레코드를 찾음 findAll() (검색) 전체 레코드 불러오기, 정렬 및 페이징이 가능함 count() (검색) 레코드 갯수 del..
좋은 Entity 설계하는 방법들 Entity 설계시 주의할 점 Setter 사용 금지 Setter가 모두 열려있으면 변경 포인트가 많아져서 유지 보수가 힘들어짐, 어디서 해당 값이 변경되었는지 추적하기 힘듬 Setter가 필요할 경우에는 추적하기 쉽도록 메서드를 따로 생성해야함 모든 연관관계는 지연로딩(LAZY)로 설정 즉시로딩은 예측이 어렵고, 어떤 SQL이 실행될 지 예측하기가 어려움 특히 JPQL 실행 시 N+1 문제가 자주 발생하게 됨 OneToOne, ManyToOne 관계는 기본이 즉시로딩이므로, 꼭 지연로딩으로 설정해야한다. 연관관계에 필요한 entity를 한번에 가져오고 싶은 경우에는 FETCH JOIN을 사용하면 된다. 컬렉션은 필드에서 바로 초기화 해야지 NullPointerException으로 안전함 NPE 문제에서..
JPA 소개, 특징, 장점 및 단점 JPA의 정의 JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. ORM이기 때문에 자바 클래스와 DB 테이블을 매핑한다. ORM이란 Object Reloational Mapping, 객체-관계 매핑이다. 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다. Persistant API라고도 할 수 있다. JPA의 특징 JPA는 특정 기능을 하는 라이브러리가 아니고, 그저 인터페이스일 뿐이다. Hibernate는 JPA라는 명세의 구현체이고, JPA를 직접 구현한 라이브러리 이다. JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 c..