Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

spring data jpa 간단한 튜토리얼

13.967 visualizaciones

Publicado el

github : https://github.com/arahansa/learnspringdatajpa
스프링 데이터 Jpa 간단한 튜토리얼 입니다. 초보용^^;
스프링 부트, 메이븐..
내용은 간단한 매핑, CRUD, 페이징, 스프링 부트조금.


Publicado en: Tecnología
  • Dating for everyone is here: ❤❤❤ http://bit.ly/2F4cEJi ❤❤❤
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • Dating direct: ♥♥♥ http://bit.ly/2F4cEJi ♥♥♥
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • 설정이랑 이런거 다 맞게 하고 했는데 24페이지에 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. There was an unexpected error (type=Not Found, status=404). No message available 오류가 뜨던데
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

spring data jpa 간단한 튜토리얼

  1. 1. ---------- 1 SPRING-DATA-JPA 초보 입문자용 개인용 정리 튜토리얼 (아라한사의 메모..;;) https://fb.com/me.adunhansa https://twitter.com/arahansa http://adunhansa.tistory.com/ 사이트 : http://100coding.com/go ABOUT CONTACT SOURCE 1
  2. 2. 1. 작성자 소개 2 아라한사 ------------------------------------------------------------------- 평소 정리를 즐겨합니다. 한 때 동영상강좌도 만들다보니.. 비실명과 만화캐릭터를 쓰네요 양해 부탁드립니다 ㅎㅎ
  3. 3. 목차 3 • 개요 – 4 • 환경설정 – 6 • 스프링부트 설정 - 14 • 스프링부트헬로월드 – 20 • 하나의 클래스 – 26 • 하나의 클래스 CRUD – 34 • 페이징 처리 – 38 • 일대일관계매핑 – 43 • 일대다매핑 – 47 • 다대다매핑 - 55 -----------------------
  4. 4. 개요 4 • 에.. 주로 독학을 하다가, 한계를 느껴서 2015년부터 스터디에 참여을 하게 되었습니다. 김현기님이 운영하시는 TDD,JPA 스터디 , 오창화님이 운영하시는 pooh 스터디 참여중^^; • 아무래도 다른 개발환경, 다른 경험을 가지신 분들이 오시다보니 스터디에서 쓰게 될 JPA 가 낯설은 분도 계신 것 같기도하고.. • JPA 가 저도 마찬가지로 봐도봐도 아직 낯설어서^^; 정리를 한번 PPT로 해볼려고 합니다. (제가 정리를 제대로 한 게 없더군요.) • 일단은 기본 객체매핑과 관계 매핑부터 시작합니다~ 간단하고 부족하고 틀린 곳이 있을 지 모릅니다. 주로 제가 혼자 공부하다보니…;; 그리고 심화 정도까지도 안 갑니다;; 항상 급하게 만드느라;;; 아..아무튼~ 자.잘 부탁드립니다! ㄷㄷ
  5. 5. 개요2 5 • 아참 김영한님께서 JPA 서적 집필중이시라고 합니다. 그리고 책 중간중간에서 JPA 를 다루는 서적들이 많이 있습니다. (예를 들자면 최범균님의 스프링 같은 책들 말이죠^^) • 그밖에도 국내에 나온 서적도 몇권 있습니다. ; 기타 링크는 여기에..; http://opentutorials.org/course/1519 • 본 PPT 는 기초적인 내용을 다룹니다.
  6. 6. 환경설정 6 • 음.. 아무래도 손에 익은 툴이 가장 낫겠지요~ • 이클립스를 키고 메이븐을 켜보도록 하겠습니다. • 컨트롤 N를 눌러주시고 메이븐 프로젝트로 가봅시다
  7. 7. 프로젝트 생성 7 • 왠만한 것은 Next를 해주다가, 아래의 창에서 maven- archetype-webapp 그리고 두번째창에서 아티팩트ID는 마음대로 적어주세요^^
  8. 8. 이렇게 에러가 납니다? -> 8 • 대략 이런 화면이 나오는데(하단 우측, 제목 글씨 옆에 이미지 참고해주세요) , 메이븐에서 갓 구워낸 녀석이 에러를 내는 것이죠~ 일단 에러부터 잡아보도록 하겠습니다. 프로젝트를 우클릭하시면 properties 가 나옵니다. (단축키로 alt+enter를 누르시고) 먼저 project factes 에서 java 버전을 컴퓨터 버전에 맞게(저는 1.8) dynamic web module 은 3.0 이상으로 맞춰줍니다~
  9. 9. 이렇게 에러가 납니다? 9 • 하지만 다음과 같이 에러가 나는 경우가 있습니다 -_-…esc를 눌러주시고 프로젝트를 alt+shift+w 를 눌러주시면 다음과 같은 화면이 뜨는데 네비게이터로 들어가셔서 org.eclipse.common.project.facet.core.xml을 고쳐주도록 합시다. • 파일 여시면 java 속성과 jst.web 속성이 있습니다. 이부분이 자바버젼과 web모듈 버전이므로 바꿔주시면 됩니다
  10. 10. 그래도 에러가 납니다? 10 • 예. 에러가 납니다;; 이번엔 JRE 버전을 바꿔주고 tomcat을 불러와주도록 해야겠습니다. Jre를 먼저 Edit 를 해주시고 1.8 버전으로 바꿔줍시다.
  11. 11. 그래도 에러가 납니다? 11 • Jre가 변경이 되었으면 이번엔 server runtime을 추가시켜줍시다. Add library 를 누르시고 server runtime을 추가해주시면 tomcat을 불러와주시면 됩니다. 여기서 자세한 내용은 생략 ^^
  12. 12. 일단 프로젝트 기본설정^^; 12 • 일단 깨끗한 프로젝트가 생성이 되었군요. 이걸로 학습을 진행해보도록 하겠습니다^^; • 원래는 스프링에서 jpa를 쓰려면 설정이 또 복잡한게 많은데.. 본 슬라이드의 목적은 jpa에 익숙해지는 것이므로 spring boot를 이용해서 복잡한 설정은 빼보겠습니다.
  13. 13. 아참.. 13 • 아.. 요즘에 gradle, 인텔리J, thymeleaf 에 익숙해지려고 하는데.. • 이상하게 인텔리J에서 spring boot를 적용시켜서 jsp뷰파일을 열 때 404 에러가 납니다. • 똑같은 프로젝트를 이클립스에서 열면 이클립스에서는 잘 되구요.. 프로젝트의 문제가 아니라 제 인텔리J 문제인것같습니다. 아시는 분은 답변좀 굽신굽신;;
  14. 14. 자 이제 Boot 를 적용시켜볼까요? 14 • 자, 모든 소스의 근원은 공홈입니다. 공홈 http://projects.spring.io/spring-boot/ 에서 소스를 한번 받아보겠습니다. 다음의 소스를 pom.xml 에 적어줍시다. (프로젝트 제일 하단 위치) • 오른쪽 화면같이 잠시 의존성 파일들을 받아주는 시간 걸립니다. 물마시고 오겠습니다.
  15. 15. 메이븐이 아파요 15 의존성 파일들을 다 받으면 다음과 같이 에러가 나는 경우 가 있는데, 메이븐설정 pom.xml 가 up-to-date 가 아니니 업데이트 해달라는 말이군요. 프로젝트를 눌러주시고 alt+f5 눌러주시면 말끔해집니다^^
  16. 16. 메이븐이 아파요 16 • 가 아니라..다음과 같이 에러가 뜨는 군요;;; • Facet 설정등을 메이븐에서 적어주지 않았기 때문에 나오는 것같습니다. 메이븐을 업데이트하니 에러가 나는 거군요. Pom.xml 을 다시 설정해줍시다.
  17. 17. 메이븐이 아파요 17 • 우선 메이븐 설정에 다음과 같이 메이븐 컴파일러 플러그인을 적용해줍시다. 소스와 타겟속성에 자바버젼을 맞춰줍니다. (아.. 중간에 properties 괜히 넣었군요;; 삽질죄송 ㅋ 이 부분은소스는 이따가 링크 나옵니다~;)
  18. 18. 메이븐들이 아파요 18 • 그리고 main/webapp/WEB-INF/web.xml 파일을 보시면 다음과 같이 되어있습니다. • 예 이것을 기준으로 매번 facet 속성이 초기화되는 것같습니다. 이것도 다음 그림으로 바꿔줍시다.
  19. 19. 방긋방긋 프로젝트 19 • 그럼 다음과 같이 이제 프로젝트를 누르고 아무리 alt+f5 메이븐 업데이트를 눌러도 에러가 나지 않습니다.. 고쳐준 것은 pom.xml 과 web.xml 입니다. 소스는 다음과 같습니다. • Pom.xml https://github.com/arahansa/learnspringdatajpa/blob/4b1e6238cc6fe6 9e2be1f3c7ef3dc7517db40a08/pom.xml • Web.xml • https://github.com/arahansa/learnspringdatajpa/blob/4b1e6238cc6fe69e2b e1f3c7ef3dc7517db40a08/src/main/webapp/WEB-INF/web.xml
  20. 20. 다시 스프링 부트 확인. 20 • 자, 이제 프로젝트가 방긋방긋 어느정도 안심이 되니 스프링부트로 헬로월드부터 띄워놓고 작업해보도록 합니다. 다음과 같이 소스를 적어줍시다. 여기(http://projects.spring.io/spring-boot/) 서 복붙하시면 됩니다.
  21. 21. 헬로월드 21 • 다음과 같이 Run- run as- spring boot app 을 눌러줘보도록 하겠습니다. 다음과 같은 헬로월드가 보입니다.
  22. 22. 스프링부트의 설정은. 22 • 음 헬로월드가 뜹니다. 참 신기한 세상입니다. • 어노테이션이 2 개 달리긴 했는데.. 부트에 관한 자세한 설명은 생략하도록 하겠습니다. (어차피 이따가 또 바꿉니다^^)
  23. 23. 자, 그 다음으로 해볼일은 Jsp 파일 열어보기! 23 • 여기선 스프링부트의 설정을 약간 다뤄봅니다. – 우선 보시는 것처럼, java 폴더에서 controller, domain, repository 패키지를 만들어줍시다. – 그리고 다음처럼 기존의 sampleController 위에 ComponentScan 을 붙여줘보도록 하겠습니다. Controller 패키지의 컴포넌트들을 읽어보겠단 뜻입니다. – (나중에 다시 또 바뀝니다.. 제가 중간에 삽질했네요 ㅋㅋ : 미래에서 적은 글)
  24. 24. 컨트롤러 패키지 설정과 application.properties 설정 24 • 다음과 같이 controller 설정을 해주도록 하겠습니다. Controller 패키지 안에 넣어줍시다. • 이렇게 되면 jsp 파일을 연결해줘야 하는데, 다음과 같이 설정해줍니다. Resources 폴더에 application.properties 란 파일을 만들어줍니다. 이 파일은 부트의 설정들을 적어주는 파일입니다. 보시는 것처럼 spring.view.prefix와 suffix 설정을 잡아주면 webapp폴더를 기준으로 /WEB-INF/jsp/로 들어갑니다. Jsp파일 위치의 최종 주소는 /WEB-INF/jsp/ 와 컨트롤러에서 적어준 test/test 그리고 suffix 가 들어간 .jsp 가 들어가서 webapp/WEB-INF/jsp/test/test.jsp 가 되게 됩니다 .
  25. 25. Jsp 설정 완료! 25 • 다음과 같은 구조로 설정해주고 boot를 다시 켜보도록 하겠습니다. 처음에 켰던 대로 다시 켜주시고 test 로 접속하시면 hello test 잘 뜹니다^^ (jsp 파일은 대충 만..만드세요 무책임;)
  26. 26. 자, 이제 spring-data-jpa 를 들어가볼까요? 26 • 자 먼저 pom.xml 을 다음과 같이 추가해주겠습니다. • 공홈소스에서 퍼오겠습니다. 밑의 설정들은 data-jpa 와 h2 내장 database를 쓰겠다는 얘기입니다. • https://spring.io/guides/gs/accessing-data-jpa/
  27. 27. 앗 그리고 잠시 리팩토링?^^; 27 • Hello package의 SampleController 가 있습니다. 클래스 상단의 어노테이션을 다음과 같이 바꿔줍시다. ㅠㅠ (삽질 죄송 ㅎ; ) • 패키지를 다음과 같이 바꿔줍시다. ㅠㅠ • SampleController 가 com.example 에 있고 나머지 controller 와 domain, repository를 com.example 밑에 넣어줍시다.ㅠㅠ (삽질죄송 ㅋ)
  28. 28. DB서버 접속 환경 설정 28 • 메모리 DB를 써보도록 하겠습니다~~ 다음과 같이 spring.datasource로 시작하는 속성들을 설정해주도록 하겠습니다. • Datasource.url 을 메모리DB로 사용하되, 스프링부트가 띄워진 상태에서 나중에 DB확인을 할수있도록 tcp localhost로 합니다. (공홈 참고함) 소스는 다음과 같습니다. • https://github.com/arahansa/learnspringdatajpa/blob/f957a2036b2998239ea59d746480e058d3c 5f3ee/src/main/resources/application.properties
  29. 29. Domain 클래스 작성 29 • 다음과 같이 도메인클래스를 만들어 주도록 하겠습니다. 소스는 여기에 있습니다~. 아 이늄은 오른쪽 사진 참고해주세요^^ㅋ 그냥 일단 간단히;; • https://github.com/arahansa/learnspringdatajpa/blob/58f0305d5a08c94b07a16f74ecf84d34a251 5c33/src/main/java/com/example/domain/JustOne.java
  30. 30. 리파지토리 작성 30 • 리파지토리를 작성해보도록 하겠습니다. Spring-data-Jpa의 매직입니다. 이렇게 해주는 것만으로 간단한 CRUD 가 완성이 되었습니다. 신기합니다^^; Data jpa의 repository 인터페이스를 상속하고 있습니다. 이런 계층이 있다는 것만 우선 보고 갑시다.
  31. 31. 컨트롤러 작성 31 • 그럼 이제 컨트롤러를 간단히 만들어주도록 하겠습니다. • https://github.com/arahansa/learnspringdatajpa/blob/58f0305d5a08c94b07a16f7 4ecf84d34a2515c33/src/main/java/com/example/controller/JustOneController.j ava • /one 으로 접속했을 때 그냥 db저장만 해두고, “test/test”로 리턴하러 가보겠습니다.
  32. 32. 32 • 자 이제, 다시한번 Boot 를 가동시켜보도록 하겠습니다. Localhost:8080/one 으로 접속하면 db 저장 작업이 동작하겠습니다. 하지만 확인을 어떻게 할가요? 여기선 우선 직접 확인해보겠습니다. 이클립스내에는 data source explorer 라는 툴이 있지만, 직접 공홈 홈피에서 h2 를 다운받아 실행해보겠습니다. 다운받아 설치하면 다음과 같은 h2 console 을 실행할 수 있습니다.
  33. 33. 내장DB 내용 확인하기 33 • 이제 콘솔로 접속을 하는데, 아까 application.properties 의 주소에 맞춰서 다음과 같이 jdbc url 을 접속해주도록 하겠습니다. • 음 그럼 저것과 같이 just_one 이 보이는 군요~ 클릭을 해주면 select 문이 완성되고 한번 내용을 봅시다. 음 뭐~~ 예상한 대로 나온 것같습니다. +를 계속 누르셔서 칼럼들이 어떻게 만들어졌는지 확인해봅시다~
  34. 34. 테스트 케이스 만들어보기~ 34 • 자 이제 하나의 속성이 어떻게 되가는지 봤으니, 테스트 코드를 작성해서 어떻게 crud 가 동작하는지 알아보도록 하겠습니다 JustoneRepository 를 여시고, Ctrl+N 하셔서 Test로 검색 Test case 를 만들어보겠습니다
  35. 35. 테스트 케이스 만들어보기~ 35 • 아.. 그리고 이런 창(우측상단)이 뜨는 군요~음.. 당장 이걸 누르고 싶은 생각도 있지만 스프링테스트로 한번 작성해보겠습니다~~ 그러기 위해선 pom.xml 을 수정해야겠군요~~ 우측하단의 의존성설정을 pom.xml에 넣어줍시다.
  36. 36. 테스트 케이스 작성~ 36 • 예. 그러면 다음과 같은 테스트 케이스가 생기며, Junit test case 로 실행시켜주시면 다음과 같이 우선은 실패가 뜰 것입니다. 이제 CRUD 를 만들어볼까요. 우선은 fail 이라는 메소드로 인해 당연히 실패합니다.
  37. 37. CRUD 작성 37 • 다음과 같이 바꿔주고 읽기쓰기삭제수정에 관한 테스트를 작성해줘봅시다~~ 자세한 내용은 주석에.. 소스는 여기에. https://github.com/arahansa/learnspringdatajpa/blob/d4de0b2e2c46f835727e95628cf545d516f097d4/src/test/java/com/ example/repository/JustOneRepositoryTest.java
  38. 38. 페이징 처리 1 38 • 자 CRUD 를 해봤으니 이번엔 페이징을 해보도록 하겠습니다. Pagerequest를 날리는 것이 여기서 핵심인 것같군요. 40개정도 저장해보고 그중에 10개를 뽑아와서 생각한 것을 뽑아왔는지 검사를 해보도록 하겠습니다~
  39. 39. 페이징 처리 2 – 정렬 39 • 페이징처리 역순 정렬해봅니다~
  40. 40. 특정 메시지로 가져와보기 40 • 이번엔 간단한 검색을 해보도록 하겠습니다. 특정 메시지를 가지고서 찾아보도록 하겠습니다~ JustOneRepository 에 좀 더 적어주면 됩니다 • 객체를 적어주시고 findBy를 하시고 자동완성 기능을 이용하시면 다음과 같이 필드를 자동으로 읽어서 무엇을 선택할지 보여줍니다. 테스트 소스는 여기에 ^^ https://github.com/arahansa/learnspringdatajpa/blob/0c0d1504cd40935d6004ee26e261b6d447baa326/src/test/java/com /example/repository/JustOneRepositoryTest.java
  41. 41. 특정 조건 추가해보기. 41 • http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query- creation • 이곳을 참고해봅시다. 여기서는 특정날짜 이전, 특정 메시지를 뽑아보도록 하겠습니다. 저렇게 여러가지 조건을 넣어서 리스트로 뽑아줄 수가 있습니다. • 다음 페이지에 한 페이지로 데이터를 집어넣고 뽑아서 테스트를 해보겠습니다. (소스가 좀 안 이쁘군요;; 날짜는 보통 joda time 아니면 java8 을 써야한다고 합니다.) • 소스는 이곳을 참고해보세요~ https://github.com/arahansa/learnspringdatajpa/commit/e4468f0df0c dc0b97e6656d5bfa22a861c133c99
  42. 42. 특정 조건 추가해보기. 42
  43. 43. 43 • 1:1 관계매핑부터 시작해보겠습니다. 일단 소스는 여기(하단 링크)를 참고해주세요~ • https://github.com/arahansa/learnspringda tajpa/commit/43305055e03335f8f1c9c89 227c724546e939ae3
  44. 44. 1:1 매핑 44 • 1:1 매핑을 한번 만들어보겠습니다. 가장 간단하게 다음과 같은 구조로 가보겠습니다. 회원이 있고, 회원세부정보를 가지고 있다고 가정합니다. 두 개의 테이블은 1:1 매핑이 되어있습니다. 최종 목적은 이런 화면을 보고 싶은 것입니다. 패키지 구조는 다음과 같이 가져갑시다. (이제부터는 패키지를 테마별로 해서 그 안에 다 집어넣습니다;; 으 애초에 이럴걸 그랬군요;;)
  45. 45. 1:1 매핑 클래스 작성 45 • 다음은 1:1 매핑 예제입니다. 양쪽에서 서로의 객체를 필드지정해주면서 @onetoone 어노테이션을 붙여줍시다. @JoinColumn 에서 name 으로 해주면 매핑하는 테이블 외래키의 컬럼명을 지정할 수 있습니다. Onetoone 매핑으로 상대 테이블의 주키를 외래키로 가져오는 것을 볼수 있습니다. mappedBy에서상대쪽 필드로 매핑(?) 되어 안기는(?) 것을 볼 수 있습니다.
  46. 46. Cascade란 무엇인고? 46 • 여기서 또 처음 보는 옵션이 나오는데 Cascade 란 것입니다. 이것은 무엇일까요? 저는 왠지 도미노가 떠오릅니다. 소스를 보면서 얘기할까요~ (컨트롤러 주목~) 이런 경우 컨트롤러에서 /member 에 접속하면 Db에 저장을 합니다. • 저장을 하는 것은 member 만 저장을 하는데, member_detail 테이블도 값이 저장되어있는 것을 보실 수가 있습니다. 이렇게 하게 만들어주는 것이 바로 cascade(우리말로는 작은폭포?) 입니다. • 매핑이 서로 되어있기 때문에 member에 set설정으로 객체를 지정해주는 것만으로도 연관된 객체들이 DB에 같이 저장이 됩니다. 기본값은 아무 cascade 작업을 안하는 것이고, Member의 cascade설정에는 all 로 되어있으며 cascade 타입엔 여러 속성이 있습니다만 이것은 책이나 API를 참고해주세요 (무책임) Fetchtype은 다음 장 일대다매핑에서 설명해보겠습니다~
  47. 47. 일대다 매핑 47 • 일대다인 경우가 어떤 경우가 있을까요. 간단히 생각해보자면, 대학 하나와 학생 여러명이 있는 경우를 생각해보기로 하겠습니다. ㅎㅎ 일인쪽에서는 @OnetoMany 를 여러명인쪽(학생)에서는 @ManyToOne 을 적어주도록 하겠습니다. • targetEntity 는 Many쪽 해당 클래스를 명시하는 것으로 보여집니다^^; FetchType은 일단 lazy 모드로 하겠습니다. • 일대다매핑 총 소스는 여기를 참고해주세요~ (https://github.com/arahansa/learnspringdatajpa/commit/b5266aa4b0 2c5d39a96768b318918eaaff3cbb9e )
  48. 48. 일대다매핑 한번 보기 48 • 다음의 리파지토리를 같은 패키지안에 만들고 이제 그럼 컨트롤러 작업을 해보겠습니다. 음.. 사실은 테스트 케이스를 만들어 학습하는게 좋은 것같지만 여기선 컨트롤러를 만들고 직접 한번 어떻게 Fetching 이 이뤄지는지도 한번 보겠습니다. Student 를 간단하게 만들기 위한 생성자도 만들어줘야겠군요.
  49. 49. 컨트롤러의 선언!~ 49 • 음.. 뭐 흐름은 크게 바뀐 것이 없습니다. 학생리스트를 만들어서 University 객체에 set 해주고 저장합니다.
  50. 50. 컨트롤러의 선언!~ 50 • application.properties 파일에 다음과 같은 줄을 추가해줍시다. 가동되는 Sql문을 볼 수 있게해줍니다. • 아 컨트롤러에 이것도 마저 넣어줍시다. 방금 전 경로로 DB세팅을 해놓고서 여기서 불러와보는 것입니다.
  51. 51. 일대다매핑 밑작업 51 • 아. University 객체에 이것도 추가해줍시다. 학생들이랑 같이 출력하게 해주는 것입니다. 모든 준비 완료되었습니다~
  52. 52. 52 • 자 이제 다시 부트를 가동시키고, 다음주소로 들어가면 이런 화면이 나옵니다. 링크를 눌러서 university check 를 해봅시다. 이클립스 콘솔에서는 다음과 같은 화면이 나옵니다. 저장이 cascade 되어서 student 에 된 것을 볼 수가 있습니다. • 다음의 경로를 입력하면 그 밑에 이런 sql문이 뜨면서 university 만 가져옵니다. Student 테이블에는 접근하지 않는 것을 볼 수가 있습니다.
  53. 53. 53 • 하지만 이 링크에 접속하면? 짜잔! 다음과 같이 Lazy loading 에서 Students 리스트를 불러오는 것을 볼 수가 있습니다. 이것이 바로 FetchType.Lazy 모드 덕분입니다.
  54. 54. FetchType 이란 무엇일까요? 54 • 자, 스택오버 플로우의 얘기에서 잠깐 설명하자면 • 대학목록을 불러올 때, 학생들(몇천 몇만 몇십만?) 다 불러올려면 부하가 엄청날 것입니다. 이럴때 좀 느긋하게 레이지 로딩하면 좋다 이겁니다?!(무책임간단한 설명;;) 자세한 것은 책과 공홈 참조 하시면 됩니다;;;; Eager 모드와 Lazy 모드가 있습니다. • (http://stackoverflow.com/questions/2990799/difference-between-fetchtype-lazy-and-eager-in-java- persistence)
  55. 55. 다대다매핑 55 • 다대다 매핑을 생각해봅시다. 책과 카테고리가 있다고 합시다. 정치,외교/정치일반/정치비평에세이 모두 MB의 비용을 가지고 있다고 하고, 정치비평 카테고리에서는 여러가지책이 있습니다. • 하나의 책이 여러 카테고리를 가질 수 있고, 하나의 카테고리에서도 여러 책을 가질 수 있습니다. 다대다매핑입니다. (이 예시가 잘 맞을진 모르겠습니다. 지금 새벽3시여서 빨리 마치고 일단 잠이나 자려고요;; 소개되는 API 만 봅시다;;(무책임))..
  56. 56. 56 • Book 에서 주키를 뽑아오고, Category에서 주키를 뽑아 이런 테이블이 만들어집니다. 소스는 다음과 같습니다. https://github.com/arahansa/learnspringdatajpa/comm it/a1358080790aec3fbc25864b920492ca7ddc7ea8
  57. 57. 다대다매핑 57 • Book 클래스와 Category 클래스를 다음과 같이 설정해줘봅시다. 게터세터와 생성자는 생략;; 소스에 나옵니다; ㅎ • 두 개의 테이블이 참여하여 다른 하나의 테이블을 만들 것입니다. 생성되는 테이블명은 BOOK_CATEGORY 가 될 것이고, 내가 참여하는 쪽에서는 joinColumns 로 우선 주키명을, 상대쪽 테이블은 inverseJoinColumns 로 주키명을 적어줍니다. 일단 이 정도로(?) .. 간결하게 해봅시다.
  58. 58. 다대다매핑 설정 58 • 이제 테스트 클래스를 작성하러가봅시다. 흠.. 여기서부터는 메모리 db 가 아니라 로컬에 저장을 하고 한번 보기로 하겠습니다. 다음과 같이 ActiveProfiles 어노테이션을 주고 test모드로 해봅시다. • 그럼 다음 부분의 application-test.profiles 란 부분의 설정들을 테스트할때 적용하게 됩니다. 다음과 같이 한번 적용해줘봅시다. Ddl-auto 어쩌고 하는 옵션은 하이버네이트가 테이블을 생성하면서 생성만 할 것인지, 생성하고 지울 것인지 하는 옵션입니다. 자세한 것은…역시 API 혹은 책을 참조해주세요^^; server.port는 톰캣이 구동되면..(음 근데 적어줄 필요가 없나?ㅎ;) 가동될 포트번호를 설정하는 것입니다..;
  59. 59. 59 • 다음과 같은 사진을 참고해서 정치비평에세이 부문에 책들을 배정해보도록 하겠습니다. 테스트코드를 짜고서 데이터베이스를 직접 확인해보고 싶습니다. 짜고서 돌리면~ 우측 사진같이 배정된 것을 볼 수가 있습니다.
  60. 60. 60 THANK YOU ! arahansa ------ ------ 페북 : https://fb.com/me.adunhansa 트위터 : https://twitter.com/arahansa 블로그: http://adunhansa.tistory.com/ 사이트 : http://100coding.com

×