일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- @Aspect
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch14
- 2024 정보처리기사 수제비 실기
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch4
- 스프링 mvc2 - 로그인 처리
- jpa 활용2 - api 개발 고급
- jpa - 객체지향 쿼리 언어
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch13
- 코드로 시작하는 자바 첫걸음
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch11
- 스프링 mvc1 - 서블릿
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch1
- 스프링 mvc1 - 스프링 mvc
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch3
- 스프링 고급 - 스프링 aop
- 게시글 목록 api
- 스프링 입문(무료)
- 타임리프 - 기본기능
- 2024 정보처리기사 시나공 필기
- Today
- Total
목록인프런 - 스프링부트와 JPA실무 로드맵 (30)
나구리의 개발공부기록
출처 : 인프런 - 실전! Querydsl (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용** 참고여기서 소개하는 기능은 제약이 커서 복잡한 실무 환경에서 사용하기에는 많이 부족함스프링 데이터에서 제공하는 기능이기에 간단히 소개하고 왜 부족한지에 대해서 초점을 맞춰 설명1. 인터페이스 지원 - QuerydslPredicateExecutor1) 인터페이스 내부 구조해당 인터페이스에 선언된 메서드들을 사용할 수 있으며 직접 들어가서 살펴보면 동일한 이름으로 오버로딩된 메서드들이 더 있음Pageable, Sort기능도 지원함공식 문서public interface QuerydslPredicateExecutor { Optional findOne(Predicate predicate);..
출처 : 인프런 - 실전! Querydsl (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 스프링 데이터 JPA 리포지토리로 변경1) 순수 JPA -> 스프링 데이터 JPA리포지토리로 변경(1) 리포지토리 생성인터페이스를 생성하고 JpaRepository를 상속받아 스프링 데이터JPA 리포지토리로 생성공통인터페이스로 제공하지 않는 이름으로 회원 찾기를 하는 메서드만 추가로 생성하면 끝남public interface MemberRepository extends JpaRepository { List findByUsername(String username);} (2) 테스트순수 JPA에서 진행했던 동일한 테스트를 리포지토리 주입만 스프링 데이터 JPA로 주입하면 ..
출처 : 인프런 - 실전! Querydsl (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 순수 JPA 리포지토리와 Querydsl1) 순수 JPA(1) 순수 JPA의 리포지토리 코드JPA를 이용하여 구현하는 가장 기본적인 메서드들과 EntityManager와 JPAQueryFactory를 생성하는 생성자를 입력package study.querydsl.repository;@Repositorypublic class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; // 생성자로 EntityManager와 JPAQueryFactory를..
출처 : 인프런 - 실전! Querydsl (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 프로젝션과 결과 반환 - 기본** 프로젝션: select에 대상을 지정하는 것1) 프로젝션 대상이 하나프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있음String뿐만 아니라 반환타입에 객체타입을 명확하게 지정할 수 있음// 프로젝션 대상이 하나@Testvoid simpleProjection() { List result = queryFactory .select(member.username) .from(member) .fetch(); for (String s : result) { System.out..
출처 : 인프런 - 실전! Querydsl (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 프로젝트 환경 설정1) 프로젝트 생성 (1) ProjectGradleJava 17SpringBoot 3.3.5(2) MetadataGroup: studyArtifact: querydsl(3) DependenciesSpring WebLombokSpring Data JPAH2 Database2) Querydsl 설정, 스프링 부트 및 JPA 설정https://nagul2.tistory.com/318 글의 querydsl 설정 내용을 참고3) 예제 도메인 모델https://nagul2.tistory.com/344 글의 도메인과 동일한 구조로 진행테스트는 생략2. 기본 문법 시작 - J..
출처 : 인프런 - 실전! 스프링 데이터 JPA (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용** 참고해당 기능들은 실무에서 자주 사용하진 않지만 알고있으면 가끔 필요할때 유용하게 사용할 수 있음기능의 복잡도에 비해 실무에서 사용하기 애매한 이유에 대해서 설명의 초점을 둠1. Specifications (명세)1) 기능설명도메인 주도 설계(Domain Driven Design)이라는 책에서는 SPECIFICATION(명세)라는 개념을 소개하는데 스프링 데이터 JPA에서 JPA가 지원하는 Criteria를 활용해서 해당 개념을 사용할 수 있도록 지원함참 or 거짓으로 평가하거나 AND, OR 같은 연산자로 조합하여 다양한 검색조건을 쉽게 생성할 수 있음일단 JPA Crite..
출처 : 인프런 - 실전! 스프링 데이터 JPA (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 사용자 정의 리포지토리 구현1) 용도특정 기능을 사용해야하거나, 기존의 메소드를 다르게 정의해야할 때 커스텀된 리포지토리를 구현해서 함께 사용할 수 있음스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하게 되면 수많은 메소드들의 정의되어있기 때문에 실질적으로 구현하기가 어렵기 때문에, 별도의 커스텀인터페이스와 그 인터페이스를 구현하는 클래스를 생성하여 메소드를 정의함실무에서는 복잡한 쿼리로 인하여 Querydsl을 사용해야할 때 주로 사용하며 Mybatis, 스프링 JDBC Template 처럼 네이티브 쿼리를 직접 입력해야할 때 사용함순수 JPA를 사용한다던가 데이터베..
출처 : 인프런 - 실전! 스프링 데이터 JPA (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 순수 JPA 페이징과 정렬1) 페이징 조건검색 조건 : 나이가 10살정렬 조건: 이름으로 내림차순페이징 조건: 첫 번째 페이지, 페이지당 보여줄 데이터는 3건2) 순수 JPA에서 페이징 처리(1) 페이징 처리 코드 작성검색조건과 offset, limit정보를 파라미터로 받는 메서드를 정의하고, 파라미터 바인딩으로 조건을 입력하여 쿼리를 완성파라미터의 offset과 limit으로 페이징 관련 메서드의 인자에 입력하여 페이징 결과를 반환보통 페이징쿼리를 짜면 현재가 몇번째 페이지인지 같이 반환되기 때문에 전체 개수정보도 필요함// 페이징public List findByPage(i..
출처 : 인프런 - 실전! 스프링 데이터 JPA (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 쿼리 메소드 기능 - 메소드 이름으로 쿼리 생성1) 순수 JPA로 이름과 나이를 기준으로 회원을 조회 및 테스트(1) MemberJpaRepository순수 JPA로 구현하려면 직접 JPQL로 쿼리를 작성해야만 가능함// 이름과 나이를 기준으로 회원을 조회 -> 순수 JPA는 직접 짜야함public List findByUsernameAndAgeGreaterThan(String username, int age) { return em.createQuery("select m from Member m where m.username = :username and m.age > :a..
출처 : 인프런 - 실전! 스프링 데이터 JPA (유료) / 김영한님 유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용1. 프로젝트 환경설정1) 프로젝트 생성 (1) ProjectGradle - GroovyJava 17Spring Boot 3.3.5(2) MetadataGroup - studyArtifact - data-jpaPackaging - jar(3) DependenciesSpring Webspring Data JPAH2 databaseLombok2) H2 데이터베이스 설정스프링부트 3.x 이상 버전이기때문에 H2데이터베이스 버전이 2.2.224버전이므로 해당 버전과 맞춰서 설치를 진행최초 db파일을 생성해야하므로 jdbc:h2:~/datajpa로 홈경로에 db파일을 생성그 이후에는jdbc..