ORM 4

[JPA] Spring Data JPA (4) - 사용자 정의 Repository

Spring Data JPA는 다양한 프레임워크와 연동기능을 제공한다. JPA만으로 해결할 수 없는 동적쿼리등을 지원하기 위함이다. 대표적으로 QueryDSL 등을 사용하고, JDBC Template, Mybatis 등도 사용할 수 있다. 가장 많이 사용해본 Mybatis와의 연동을 실습해보았다. 사용자 정의 Repository - MyBatis MemberRepositroy에 기존 Spring Data JPA가 제공하는 메소드 말고, 다른 프레임워크(Mybatis)를 이용한 메소드를 추가하기 위해 다음과 같은 사용자 정의 Repository와 구현체 class를 만들어보았다. 1 2 3 public interface MemberRepositoryMybatis { List findDynamic(Membe..

Java&Web 2020.08.28

[JPA] Spring Data JPA (3) - 페이징과 정렬

페이징과 정렬 Spirng Data JPA는 아주 간편한 페이징과 정렬기능을 제공해준다. 메소드의 리턴 타입으로 Page를 사용해주고, pageable이란 파라미터에 시작페이지, 갯수, 정렬조건, 그리고 메소드이름으로 검색조건을 적절히 사용해준다면 count쿼리까지 자동으로 조회해주는 쉬운 페이징을 할 수 있다. 다음과 같은 예시가 있다. 1 2 3 4 5 public interface MemberRepository extends JpaRepository{ //페이징 Page findByAge(int age, Pageable pageable); } Colored by Color Scripter 위 처럼 Page를 리턴타입으로 받아주고, Pageable 변수를 파라미터로 가지는 메소드 네이밍 쿼리를 작성하..

Java&Web 2020.08.28

[JPA] Spring Data JPA (2) - 메소드 네임 쿼리, @Query

메소드 네임 쿼리 JPA는 기본적으로 JpaRepository을 상속 받음으로써 기본적인 CRUD를 할 수 있는 쿼리를 제공한다. 또한 이것과 별게로 추가적으로 규칙에 의한 메소드 네임만으로 다양한 쿼리문을 실행시킬 수 있는 기능도 제공해준다. 즉, JPA는 메소드의 이름을 분석하여 JPQL을 생성하고 실행한다. 예를 들면 다음과 같다. 1 2 3 public interface MemberRepository extends JpaRepository { List findByEmailAndName(String email,String name); } Colored by Color Scripter MemberRepository에 findByEmailAndName이란 메소드를 만들어주었고, 이것을 JPA는 내부적으..

Java&Web 2020.08.28

[JPA] Spring Data JPA (1) - 소개, 기본

JPA란? Java Persistence API로써 자바진영의 ORM 기술 표준 ※ ORM : Object-Relational Mapping, 객체와 관계형 데이터베이스의 매핑 기존에 존재했던 패러다임 불일치 문제를 해결 기존 JDBC와는 다르게 객체는 객체대로 설계, RDBMS는 RDBMS대로 설계 후 맵핑하는 방식 ※ 객체와 RDBMS의 차이 : 상속, 연관관계, 데이터 타입, 데이터 식별 방법 애플리케이션을 SQL이 아닌 객체중심으로 개발하여 생산성과 유지보수를 높임 JPA는 인터페이스, 구현체로써 Hibernate, EclipseLink, DataNucleus등을 사용, 대표적으로 Hibernate를 사용 Spring Data JPA란? Spring Data JPA는 Spring Data 프로젝트..

Java&Web 2020.08.28