인프런

    실무 활용 - 스프링 데이터 JPA와 Querydsl

    실무 활용 - 스프링 데이터 JPA와 Querydsl

    목차 스프링 데이터 JPA 리포지토리로 변경 사용자 정의 리포지토리 스프링 데이터 페이징 활용1 - Querydsl 페이징 연동 스프링 데이터 페이징 활용2 - CountQuery 최적화 스프링 데이터 페이징 활용3 - 컨트롤러 개발 스프링 데이터 JPA 리포지토리로 변경 스프링 데이터 JPA - MemberRepository 생성 package study.querydsl.repository; import org.springframework.data.jpa.repository.JpaRepository; import study.querydsl.entity.Member; import java.util.List; public interface MemberRepository extends JpaRepositor..

    기본 문법

    목차 시작 - JPQL vs Querydsl 기본 Q-Type 활용 검색 조건 쿼리 결과 조회 정렬 페이징 집합 조인 - 기본 조인 조인 - on절 조인 - 페치 조인 서브 쿼리 Case 문 상수, 문자 더하기 시작 - JPQL vs Querydsl 테스트 기본 코드 @SpringBootTest @Transactional public class QuerydslBasicTest { @PersistenceContext EntityManager em; @BeforeEach public void before() { Team teamA = new Team("teamA"); Team teamB = new Team("teamB"); em.persist(teamA); em.persist(teamB); Member me..

    프로젝트 환경설정

    목차 프로젝트 생성 Querydsl 설정과 검증 라이브러리 살펴보기 H2 데이터베이스 설치 스프링 부트 설정 - JPA, DB 프로젝트 환경설정 프로젝트 생성 스프링 부트 스타터(https://start.spring.io/) 사용 기능: Spring Web, jpa, h2, lombok SpringBootVersion: 2.6.6 groupId: study artifactId: querydsl Gradle 전체 설정 plugins { id 'org.springframework.boot' version '2.6.6' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'study' version = '0.0.1-..

    나머지 기능들

    목차 Specifications (명세) Query By Example Projections 네이티브 쿼리 Specifications (명세) 책 도메인 주도 설계(Domain Driven Design)는 SPECIFICATION(명세)라는 개념을 소개 스프링 데이터 JPA는 JPA Criteria를 활용해서 이 개념을 사용할 수 있도록 지원 술어(predicate) 참 또는 거짓으로 평가 AND OR 같은 연산자로 조합해서 다양한 검색조건을 쉽게 생성(컴포지트 패턴) 예) 검색 조건 하나하나 스프링 데이터 JPA는 org.springframework.data.jpa.domain.Specification 클래스로 정의 명세 기능 사용 방법 * JpaSpecificationExecutor 인터페이스 상속*..

    스프링 데이터 JPA 분석

    목차 스프링 데이터 JPA 구현체 분석 새로운 엔티티를 구별하는 방법 데이터 JPA 구현체 분석 스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체 org.springframework.data.jpa.repository.support.SimpleJpaRepository SimpleJpaRepository @Repository @Transactional(readOnly = true) public class SimpleJpaRepository ...{ @Transactional public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity); return entity; } else { return em.merge(en..

    확장 기능

    목차 사용자 정의 리포지토리 구현 Auditing Web 확장 - 도메인 클래스 컨버터 Web 확장 - 페이징과 정렬 사용자 정의 리포지토리 구현 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 기능이 너무 많음 다양한 이유로 인터페이스의 메서드를 직접 구현하고 싶다면? JPA 직접 사용( EntityManager ) 스프링 JDBC Template 사용 MyBatis 사용 데이터베이스 커넥션 직접 사용 등등... Querydsl 사용 사용자 정의 인터페이스 package study.datajpa.repository; import study.datajpa.entity.Member; import j..

    쿼리 메소드 기능

    목차 메소드 이름으로 쿼리 생성 JPA NamedQuery @Query, 리포지토리 메소드에 쿼리 정의하기 @Query, 값, DTO 조회하기 파라미터 바인딩 반환 타입 순수 JPA 페이징과 정렬 스프링 데이터 JPA 페이징과 정렬 벌크성 수정 쿼리 @EntityGraph JPA Hint & Lock 메소드 이름으로 쿼리 생성 메소드 이름을 분석해서 JPQL 쿼리 실행 이름과 나이를 기준으로 회원을 조회하려면? 순수 JPA 리포지토리 public List findByUsernameAndAgeGreaterThan(String username, int age) { return em.createQuery("select m from Member m where m.username = :username and m...

    프로젝트 환경설정

    목차 프로젝트 생성 라이브러리 살펴보기 스프링 데이터 JPA와 DB 설정, 동작확인 프로젝트 환경설정 프로젝트 생성 스프링 부트 스타터(https://start.spring.io/) 사용 기능: web, jpa, h2, lombok SpringBootVersion: 2.2.1 groupId: study artifactId: data-jpa Gradle 전체 설정 plugins { id 'org.springframework.boot' version '2.6.6' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility =..

    메시지, 국제화

    목차 메시지, 국제화 소개 스프링 메시지 소스 설정 스프링 메시지 소스 사용 웹 애플리케이션에 메시지 적용하기 웹 애플리케이션에 국제화 적용하기 메시지, 국제화 소개 메시지 악덕? 기획자가 화면에 보이는 문구가 마음에 들지 않는다고, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까? 여러 화면에 보이는 상품명, 가격, 수량 등, label 에 있는 단어를 변경하려면 다음 화면들을 다 찾아가면서 모두 변경해야 한다. 지금처럼 화면 수가 적으면 문제가 되지 않지만 화면이 수십개 이상이라면 수십개의 파일을 모두 고쳐야 한다. addForm.html , editForm.html , item.html , items.html 왜냐하면 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문이다...

    타임리프 - 기본 기능

    타임리프 - 기본 기능

    목차 프로젝트 생성 타임리프 소개 텍스트 - text, utext 변수 - SpringEL 기본 객체들 유틸리티 객체와 날짜 URL 링크 리터럴 연산 속성 값 설정 반복 조건부 평가 주석 블록 자바스크립트 인라인 템플릿 조각 템플릿 레이아웃1 템플릿 레이아웃2 정리 프로젝트 생성 사전 준비물 Java 11 설치 IDE: IntelliJ 또는 Eclipse 설치 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.5.x Project Metadata Group: hello Artifact: thymeleaf-basic Name: thymeleaf-..