From d71dc222c34264d939238ef76da8ed24475a3914 Mon Sep 17 00:00:00 2001 From: Keesun Baik Date: Thu, 10 May 2018 16:48:11 -0700 Subject: [PATCH] Added spring data jpa --- README.md | 29 ++++++++--------- spring-data-jpa-reference-coding.md | 49 +++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 spring-data-jpa-reference-coding.md diff --git a/README.md b/README.md index 53987ec..a68c5c0 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ -# Welcome -안녕하세요. 반갑습니다. 이름은 백기선이고 온라인에서 주로 Whiteship이라는 아이디로 활동하고 있습니다. -여기는 제가 공부한 것들 정리해서 올리는 저장소입니다. - -# Study -## [:tv: InfoQ](infoq.md) -## [:tv: 하이버네이트 ORM 레퍼런스 코딩](hibernate-orm-reference-coding.md) -## [:book: 이팩티브 자바](https://github.com/keesun/study/tree/master/effective-java) -## [:tv: 스프링 부트 2.0 레퍼런스 코딩 1-39 (完)](spring-boot-reference-coding.md) -## [:tv: 도커 시작하기 1-3 (完)](doker-getting-started.md) -## [:tv: 쿠버네티스 시작하기 1-3(完)](kubernetes-getting-started.md) - -# Cheet Sheet -## [Docker 명령어 모음](docker-cmds.md) +# Welcome +안녕하세요. 반갑습니다. 이름은 백기선이고 온라인에서 주로 Whiteship이라는 아이디로 활동하고 있습니다. +여기는 제가 공부한 것들 정리해서 올리는 저장소입니다. + +# Study +## [:tv: InfoQ](infoq.md) +## [:tv: 스프링 데이터 JPA](spring-data-jpa-reference-coding.md) +## [:tv: 하이버네이트 ORM 레퍼런스 코딩](hibernate-orm-reference-coding.md) +## [:book: 이팩티브 자바](https://github.com/keesun/study/tree/master/effective-java) +## [:tv: 스프링 부트 2.0 레퍼런스 코딩 1-39 (完)](spring-boot-reference-coding.md) +## [:tv: 도커 시작하기 1-3 (完)](doker-getting-started.md) +## [:tv: 쿠버네티스 시작하기 1-3(完)](kubernetes-getting-started.md) + +# Cheet Sheet +## [Docker 명령어 모음](docker-cmds.md) diff --git a/spring-data-jpa-reference-coding.md b/spring-data-jpa-reference-coding.md new file mode 100644 index 0000000..3b5bac5 --- /dev/null +++ b/spring-data-jpa-reference-coding.md @@ -0,0 +1,49 @@ +# 스프링 데이터 JPA 레퍼런스 코딩 + +## 참고 + +[스프링 데이터 JPA 레퍼런스](https://docs.spring.io/spring-data/jpa/docs/2.0.7.RELEASE/reference/html/) + +## 유툽 인덱스 + +### 스프링 데이터 JPA Day 1. 주요 인터페이스 자세히 살펴보기 + +[![스프링 데이터 JPA Day 1. 주요 인터페이스 자세히 살펴보기](https://img.youtube.com/vi/ZDi5_DZjc88/0.jpg)](https://youtu.be/ZDi5_DZjc88) + +스프링 데이터 JPA 레피런스를 보기 시작했습니다. 이번에는 처음부터 3.2장까지 살펴봤습니다. + +https://docs.spring.io/spring-data/jpa/docs/2.0.7.RELEASE/reference/html/ + +의존성 관리는 스프링 부트를 쓰는 방법과 스프링 데이터의 릴리즈 트레인을 사용하는 방법이 있는데, 사실상 스프링 부트도 스프링 데이터의 릴리즈 트레인을 사용합니다. 데모로 스프링 부트에서 데이터 버전 커스터마이징 하는 방법을 보여드렸습니다. + +중요한 내용은 JpaRepository - PagingAndSortingRepository - CrudRepository - Repository 이러한 상속 구조와 각 인터페이스의 역할을 이해하는 것인데요. + +젤 밑단에 있는 영속화 기술에 특화된 JpaRepository를 빼면 나머진 다른 영속화 기술용 리파지토리에서도 재사용하는 공용 인터페이스들 입니다. 그 인터페이스들을 자세히 살펴보면서 설명해 드렸습니다. + +간단한 예제로 Book이라는 엔티티 추가하고 findByIsbn이라는 쿼리 메서드 쿼리 만드는 것을 보여드렸습니다. + +### 스프링 데이터 JPA Day 2. 상속 없이도 리포지토리 만들 수 있다 + +[![스프링 데이터 JPA Day 2. 상속 없이도 리포지토리 만들 수 있다](https://img.youtube.com/vi/1K_SWhn-Yps/0.jpg)](https://youtu.be/1K_SWhn-Yps) + +스프링 데이터 JPA 레퍼런스 2.3을 살펴봤습니다. + +Repository 인터페이스를 상속해서 만드는 방법 말고, 애노테이션을 사용해서 만드는 방법도 있는데.. 가능은 하지만 사실상 낚시성 제목에나 쓰라고 만들어 둔 기능 같다는 생각이 드네요. + +그보다 사실 훨씬 중요한 내용은 스프링 프레임워크 5에 도입된 널 처리 관련 애노테이션들을 사용할 수 있다는 겁니다. + +https://docs.spring.io/spring/docs/5.0.5.RELEASE/spring-framework-reference/core.html#null-safety + +레퍼런스에 설명이 약간 오묘하면서 이상한 부분이 있어서 코딩으로 확인해 봤는데 아니나 다를까... 예상 했던 대로 동작했구요. + +마지막으로 여러가지 영속화 기술을 사용할 때, 즉, JPA도 쓰고 몽고 DB도 쓰는 경우에 해당 기술에 특화된 인터페이스의 리포지토리를 상속 받으시는게 좋습니다. 아니면 맨 마지막에 나온 코드 예제처럼 해당 기술의 베이스 패키지를 각기 다른 패키지로 지정해 주거나요.. (이건 다음 시간에 코딩으로 확인해 보겠습니다.) + +### 스프링 데이터 JPA Day 3. 쿼리 메서드 만들기 + +[![스프링 데이터 JPA Day 3. 쿼리 메서드 만들기](https://img.youtube.com/vi/nwDeGsXn01I/0.jpg)](https://youtu.be/nwDeGsXn01I) + +스프링 데이터 JPA 레퍼런스 2.4를 보기 시작했습니다. + +메서드를 보고 쿼리를 만드는 방법이 크게 두가지 있습니다. 메서드 이름을 보고 쿼리를 만드는 방법과, 메서드에 있는 어떠한 정보를 (보통 애노테이션이겠죠?) 바탕으로 개발자가 직접 정의한 쿼리를 가져오는 방법. + +그럼 그 두가지 방법 중에 어떤 방법으로 가져와야 하는지.. 그게 이제 스토리지 마다 달라 질 수 있는데, 세가지 전략과 그 중에 기본으로 설정되어있는 전략은 무엇인지 또 어떻게 그 전략을 바꿀 수 있는지 살펴봤습니다. \ No newline at end of file