백엔드(Back-End)/JPA(Java Persistence API)6 [Spring Data JPA] - 쿼리 메서드 기능, JPA NamedQuery, Repository 사용자 정의 쿼리 메서드 1. 메서드 이름으로 쿼리 생성 이전 포스팅에서 마지막에 남은 궁금증이 하나 존재했다. 공통 영역을 벗어난 도메인에 특화된 기능들은 어떻게 해결해야 할까? (1) 스프링 데이터 JPA가 제공하는 강력한 쿼리 메서드 기능 3가지가 존재한다. - 메서드 이름을 분석하여 자체적인 쿼리 생성 - 메서드 이름으로 JPA NamedQuery 호출 - @Query 어노테이션을 사용하여 Repository Interface 영역에 직접 쿼리 메서드 정의하기 1-1. 메서드 이름으로 쿼리 생성 (1) 저번 포스팅에서 스프링 데이터 JPA를 상속받지 않았던 MemberJpaRepository에 사용자의 이름을 대상으로 특정 나이보다 나이가 많은 사용자를 조회하는 기능 요구사항이 추가되었다고 가정해 보자. @Reposito.. 2023. 10. 11. [Spring Data JPA] - 공통 인터페이스(Common Interface) 기능, 스프링 데이터 JPA 상속 계층도 1. 순수 JPA 기반 Repository 생성하기 (1) 우선 JPA만을 활용한 Repository를 생성하고 이후 Spring Data JPA의 공통 인터페이스(Common Interface)에 대해 알아본 뒤 이전에 생성했던 JPA 기반 Repository를 스프링 데이터 JPA로 적용해 보고 분석을 진행한다. 1-1. MemberJpaRepository 클래스 정의 package study.datajpa.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import study.da.. 2023. 10. 9. [Spring Data JPA] - Spring Data, Spring Data JPA는 무엇일까? 1. Spring Data 1-1. Spring Data의 정의 (1) Spring Data JPA를 알아보기 전에 Spring Data가 무엇인지 확인해 보자. (2) Spring Data는 데이터 계층의 엑세스를 단순화하고 효율적으로 처리할 수 있도록 도와주는 프로젝트 집합이다. (3) 이러한 Spring Data는 다양한 데이터베이스와의 상호작용을 간소화해서 개발자가 데이터베이스와 더 효율적으로 통신할 수 있도록 도와주고 있다. (4) Spring Data는 데이터베이스에 대한 다양한 모듈을 제공하고 있고 각 모듈들은 데이터베이스와의 통합을 담당하며 이를 통해 개발함으로써 편리하게 데이터를 다룰 수 있다는 장점이 있다. 1-2. Spring Data의 다양한 모듈과 기능 (1) Repository .. 2023. 10. 6. [JPA] - 객체와 테이블 매핑, 필드와 컬럼 매핑, 기본 키 매핑 들어가기 앞서 JPA에서 핵심이 되는 중요한 요소 (1) 영속성 컨텍스트(Persistence Context) 이해 - 동작적인 측면을 이해하는 것 (2) 객체와 관계형 데이터베이스의 테이블을 올바르게 매핑하는 것 - 설계적인 측면을 이해하는 것 1. 객체와 테이블 매핑하기 1-1. Entity 매핑의 종류 (1) 객체와 테이블을 매핑하는 것 : @Entity, @Table (2) 필드와 컬럼을 매핑하는 것 : @Column (3) 기본 키(Primary Key)를 매핑하는 것 : @Id (4) 연관관계 매핑 : @ManyToOne, @JoinColumn 등... 1-2. @Entity (1) 해당 어노테이션이 적용된 객체(클래스)는 JPA가 관리하게 되는 대상 객체인 엔티티(Entity)가 된다. (2.. 2023. 10. 5. [JPA] - 영속성 컨텍스트(Persistence Context), Entity의 생명 주기(Life-Cycle), 영속성 컨텍스트의 다양한 이점 정리 1. 데이터베이스 Dialect 1-1. 데이터베이스 Dialect(Database dialect) (1) JPA는 특정 데이터베이스에 종속적이지 않도록 설계되었다. (2) 각각의 관계형 데이터베이스는 SQL syntax와 제공되는 관련 함수들이 조금씩 상이하다. (3) 데이터베이스 Dialect는 위의 (2)번과 같은 특징으로 SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 성질이나 기능을 말한다. (4) JPA 구현체인 Hibernate는 40가지 이상의 데이터베이스 Dialect를 지원하고 있다. (5) javax.persistence.~ : - Hibernate 라이브러리에 종속적이지 않은 다른 JPA 구현체 라이브러리들을 사용할 수 있다.(표준을 지킨 property로 볼 수 있음) 2... 2023. 9. 25. [JPA] - JPA란 무엇일까? JPA를 통해 해결할 수 있는 문제들 1. JPA를 시작하기 전에 1-1. 개요 (1) 실무에서는 적어도 수 십개의 테이블과 객체가 존재하고 서로 복잡하게 연관되어 객체 간 상호 통신이 이루어진다. (2) JPA를 실무에 적용하기 어려운 이유 중 하나가 바로 이러한 객체들과 데이터베이스의 테이블을 정확하게 매핑하는 부분에 있어서 어려움을 느끼기 때문이다. (3) 핵심적으로 JPA 내부 동작 방식을 이해하는 것이 중요하다. 1-2. SQL(Structured Query Language) 중심 개발의 문제점 - (1) (1) 무한 반복, 지루한 코드 (2) 변경에 따라 관계형 데이터베이스의 SQL에 대한 의존적 개발을 피하기 어려워진다. (3) 객체와 관계형 데이터베이스 사이의 패러다임 불일치 문제를 해결하기 어렵다. - 상속, 연관관계, 데이.. 2023. 9. 19. 이전 1 다음