스프링

    순수 JPA와 Querydsl

    목차 순수 JPA 리포지토리와 Querydsl 동적 쿼리와 성능 최적화 조회 - Builder 사용 동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용 조회 API 컨트롤러 개발 순수 JPA 리포지토리와 Querydsl 순수 JPA 리포지토리 package study.querydsl.repository; import com.querydsl.jpa.impl.JPAQueryFactory; import org.springframework.stereotype.Repository; import study.querydsl.entity.Member; import javax.persistence.EntityManager; import java.util.List; import java.util.Optional;..

    스프링 데이터 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..

    쿼리 메소드 기능

    목차 메소드 이름으로 쿼리 생성 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 파일에 메시지가 하드코딩 되어 있기 때문이다...

    웹 페이지 만들기

    웹 페이지 만들기

    목차 프로젝트 생성 요구사항 분석 상품 도메인 개발 상품 서비스 HTML 상품 목록 - 타임 리프 상품 상세 상품 등록 폼 상품 등록 처리 - @ModelAttribute 상품 수정 PRG Post/Redirect/Get RedirectAttributes 정리 프로젝트 생성 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.4.x Project Metadata Group: hello Artifact: item-service Name: item-service Package name: hello.itemservice Packaging: Jar (주..

    기본 기능

    기본 기능

    목차 프로젝트 생성 로깅 간단히 알아보기 요청 매핑 요청 매핑 - API 예시 HTTP 요청 - 기본, 헤더 조회 HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form HTTP 요청 파라미터 - @RequestParam HTTP 요청 파라미터 - @ModelAttribute HTTP 요청 메시지 - 단순 텍스트 HTTP 요청 메시지 - JSON HTTP 응답 - 정적 리소스, 뷰 템플릿 HTTP 응답 - HTTP API, 메시지 바디에 직접 입력 HTTP 메시지 컨버터 요청 매핑 헨들러 어뎁터 구조 프로젝트 생성 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.4.x Project Metadata Group: hello Artifact..

    서블릿, JSP, MVC 패턴

    서블릿, JSP, MVC 패턴

    목차 회원 관리 웹 애플리케이션 요구사항 서블릿으로 회원 관리 웹 애플리케이션 만들기 JSP로 회원 관리 웹 애플리케이션 만들기 MVC 패턴 - 개요 MVC 패턴 - 적용 MVC 패턴 - 한계 회원 관리 웹 애플리케이션 요구사항 회원 정보 이름: username 나이: age 기능 요구사항 회원 저장 회원 목록 조회 회원 도메인 모델 회원 도메인 모델 package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { } pu..

    서블릿

    서블릿

    목차 프로젝트 생성 Hello 서블릿 HttpServletRequest - 개요 HttpServletRequest - 기본 사용법 HTTP 요청 데이터 - 개요 HTTP 요청 데이터 - GET 쿼리 파라미터 HTTP 요청 데이터 - POST HTML Form HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트 2. 서블릿 - HTTP 요청 데이터 - API 메시지 바디 - JSON HttpServletResponse - 기본 사용법 HTTP 응답 데이터 - 단순 텍스트, HTML HTTP 응답 데이터 - API JSON 정리 프로젝트 생성 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트 생성 https://start.spring.io 프로젝트 선택 Project: Gradle Project..

    API 개발 고급 - 실무 필수 최적화

    API 개발 고급 - 실무 필수 최적화

    API 개발 고급 - 실무 필수 최적화 OSIV(Open Session In View)와 성능 최적화 OSIV와 성능 최적화 Open Session In View: 하이버네이트에선 Seesion Open EntityManager In View: JPA에선 EntityManager (관례상 OSIV라 한다.) OSIV ON spring.jpa.open-in-view : true -> 기본값 WARN 7781 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view r..