개인취향 JPA 사용기 1편 – SpringBoot + JPA + Gradle

안녕하세요? 가자고 개발팀 막내를 맡고 있는 gemini 입니다.

저희 가자고 서비스는 Spring Boot + JPA/Hibernate 기반으로 개발이 되어있습니다.
그리고 개인적으로는 JPA를 쓴지는 약 2년 되어갑니다만, 아직 많이 부족합니다.

팀 내부에서는 JPA에 관하여 여러 얘기가 오고 갑니다만, 저는 ORM 옹호파를 맡고 있습니다.
내부적으로 문제 발생 시 자주 JPA를 의심합니다. 그러나 이것은 JPA를 아직 성숙하게 다루지 못하기 때문이라 생각합니다.

물론 러닝커브가 존재하는 것은 맞기에 팀원들이 JPA 스터디에 힘을 쏟을지, 빠르게 걷어낼지는 팀의 선택입니다.
개인적으로 ORM에 관심이 있어서 가자고를 JPA로 개발해가며 느낀 점 + 제 개인의 취향대로 JPA를 지금 보다 더 올바르게 사용해보려 합니다.

먼저 오늘은 Spring Boot + JPA + Gradle 프로젝트 설정을 해볼 것입니다.

프로젝트 생성

Spring Boot 프로젝트 생성을 진행합니다.
Screen Shot 2016-08-24 at 1.01.50 AM

프로젝트 설정

프로젝트 설명은 편하게 작성합니다. 저는 개인적으로 Maven 보다는 Gradle 을 선호합니다.
각각 장단점이 존재합니다만, 해당 내용은 추후 다른 포스팅으로 정리해보겠습니다.
Screen Shot 2016-08-24 at 1.40.55 AM

초기 의존성 설정

프로젝트 생성 후 필요에 따라 추가하면 되기 때문에 무시하셔도 됩니다만, 전 그냥 눈에 들어오는 것만 체크하였습니다.
Screen Shot 2016-08-24 at 1.04.25 AM

자 이제 프로젝트가 생성되었습니다. 시작이 반인데 벌써 끝나갑니다.

프로젝트 생성 후 build.gradle 을 확인해봅니다. 조금 길고 뭐가 필요한지도 모르겠습니다.
그래서 저는 아래와 같이 수정하였습니다. 모르는 건 일단 지우고 필요할 때 추가하면 될 것 같습니다.

필요에 따라 부가적인 의존성을 추가합니다, Boot 1.4가 릴리즈 되고 Hibernate 버전이 5.0.9.Final 으로 올라왔습니다.
Boot 1.3.x로 설정할 때에는 Hibernate 버전을 강제로 올려줬습니다만, 버전 명시를 생각 없이 늘리다 보면 Boot를 사용한 의미가 퇴색되는 것 같기에 가능한 지양합니다.

application.properties 을 설정합니다, 일단 저는 최소한의 설정을 넣어봤습니다.

Spring Context가 잘 load 되는지 contextLoads 테스트를 돌려봅시다.

Screen Shot 2016-08-24 at 1.53.44 AM

별문제 없이 테스트가 통과하였네요. JPA를 올바르게 쓰는 과정에서 테스트가 중요하다 생각합니다.

앞으로 어떤 것을 만들지 잘 모르겠으나, 장바구니고객 객체가 존재한다고 생각해보겠습니다.
대략 이런 형태로 존재하겠지요.

id 필드는 getter 만 만들었는지, lombok은 몰라서 안 쓰는 건지 궁금하실 수도 있으실 겁니다만
해당 내용은 다음 편에 적도록 하겠습니다.

그럼 이제 Boot를 Run 시켜봅니다.
Screen Shot 2016-08-24 at 11.15.26 AM

정상적으로 동작한 것처럼 보이네요, 다행입니다.

충분히 예상 가능하지만 무슨 일이 벌어졌나 DB Tool을 실행시켜 테이블 목록을 한번 확인해봅니다.

객체만 만들었을 뿐인데 상응하는 테이블이 잘 만들어졌습니다.

몇몇 설정들도 제가 원하는 대로 적용된 것 같네요, 다음 편에서는 이러한 JPA 설정과 객체 설계에 대한 생각을 공유해보겠습니다.

피드백은 언제나 환영합니다. geminikims@gmail.com

두서없는 글 읽어주셔서 감사합니다.