당니의 개발자 스토리

프로젝트 생성 본문

스프링/실전! 스프링 부트와 JPA 활용1

프로젝트 생성

clainy 2024. 3. 31. 19:01

1. 프로젝트 환경설정

이번 시간에는 프로젝트를 생성하고 전체적인 환경을 한번 세팅해보겠습니다.

이제 목차를 간단하게 보여드리면,

먼저 프로젝트를 만들고, 실제 만들어진 프로젝트의 라이브러리를 한번 쭉 살펴볼 거구요.

그 다음에 저희가 화면, 즉 HTML 렌더링 해야 되기 때문에 view와 관련된 환경 설정을 할 거고, 그 다음에 h2 데이터베이스를 설치를 하고 마지막으로 JPA데이터베이스를 설정하고 실제 돌아가는지 동작을 확인해보겠습니다.


오늘은 프로젝트 환경 설정 중에서 프로젝트 생성입니다.

여러분 Spring Boot와 JPA를 가지고 전체적으로 프로젝트를 만들어보는 것이기 때문에, 요즘에 Spring Boot가 참 좋은게 https://start.spring.io 여기에 들어가시면 Spring Initializer 라는 게 뜹니다.

이걸 가지고 프로젝트를 아주 쉽게 만들어 볼 건데요.

먼저 프로젝트는 Maven으로 만들지, Gradle로 만들지인데 사실 저도 고민을 많이 했어요.

요즘에는 Maven에서 Gradle로 많이 넘어가는 추세이기 때문에 저는 그레이들을 쓰도록 하겠습니다. 그 다음 Language는 Java를 선택했구요.

스프링 부트의 버전을 고르시면 되는데 영어가 붙은 것들은 아직 안정화된 버전이 아니기 때문에, 안정화된 3.2.2를 쓰겠습니다.

그 다음에 어떤 라이브러리들을 내가 의존해서 쓸 거냐를 적어 주시면 되는데, 제일 먼저 web을 검색하면,

Spring Web 라는 것을 넣을 건데요. 검색하시면 RESTful API나 아니면 Spring MVC, 그리고 Apache Tomcat을 기본적으로 내장하고 있는 거를 넣으셔야 됩니다. 웹 어플리케이션을 개발할 때는 이게 꼭 필요합니다.

 

그 다음에 두번째로, 저희는 JSP를 쓸 게 아니고 Thymeleaf라는 모던 서버 사이드 자바 템플릿 엔진 이라고 되어 있는

이거를 쓸 건데요. 이건 뭐 JSP 보다 확실히 낫습니다. 근데 이게 약간 장단점이 있는데 나중에 한번 보면서 설명을 드릴게요.

참고로 요즘에는 JSP를 거의 안 써요. 이게 뭐 성능이나 이런 여러가지 이슈들도 있고 요즘 스프링 부트 내장 톰캣에서도, 스프링 부트에서도 사실 권장하지 않습니다.

 

자 그 다음에 이제 JPA를 쓸 건데,

JPA가 따로 없고 Spring Data JPA라는 거를 선택하시면 됩니다. 보시면, Persist Data in SQL Stores 해서, 결론은 Java Persist APIJPA거든요.

JPA를 사용하는데 Spring Data랑 Hibernate를 가지고 사용한다. 라고 되어 있습니다. 이걸 선택해 주시면 됩니다.

참고로 이번 강의에서는 Spring Data JPA에 대해서 설명하지 않아요. Spring Boot와 JPA를 가지고 어떻게 애플리케이션을 잘 만드는지 설명해드릴 거예요.

사실 여러분이 SpringJPA, 두 개를 사용해서 어떻게 애플리케이션을 잘 만드는지 알면, Spring Data JPA를 쉽게 배울 수 있어요. Spring Data JPA는 스프링이랑 JPA를 활용한 유틸리티성 라이브러리 라고 보시면 되거든요.

그래서 중요한 것은 스프링이랑 JPA로 어떻게 애플리케이션 만드는지를 아는 게 중요해요. 그 다음에 그걸 굉장히 잘 이해한 상태에서 스프링 데이터 JPA를 쓰면, 사실 Spring Data JPA도 금방 배우고 또 정말 많은 코드 중복하는 것을 줄일 수 있죠. 참고로 저는 실무에서 Spring Data JPA를 기본적으로 씁니다.

근데 이제 아무래도 JPA에 대해서 깊이 알고 쓰는 거랑 모르는 상태로 쓰는 것은 또 다르기 때문에 개인적으로는 JPA에 대해서 깊이 알고 Spring Data JPA는 도움용으로 쓰는 것을 추천드립니다.

 

그 다음에 데이터베이스는 h2 데이터베이스를 쓸 거구요.

이거 말고도 mysql 같은 거 좋은 것들이 많습니다. 근데 이제 h2는 뭔가 개발을 하거나 테스트 하거나 할 때 참 좋아요. h2 데이터베이스 설치할 때 말씀드릴 건데, mysql 같은 경우는 설치하는 게 까다롭단 말이에요. 근데 h2는 웹 어플리케이션을 실행할 때 데이터베이스를 메모리 상태에 내장해서 실행할 수도 있어서 되게 간단하게 교육용으로 장점이 많습니다.

 

그리고 마지막으로 Lombok.

이제 Lombok을 아시는 분도 있고 모르시는 분도 있을 텐데, 여기 보시면 reduce boilerplate code 라고 되어있죠. 그러니까 지루하게 반복하는 코드를 줄여준다는 건데, Java를 보면 이제 Getter, Setter를 쓰잖아요. 간단한 어노테이션 하나로 그 코드를 다 자동으로 generation 해주는 라이브러리입니다. 저도 실무에서 많이 쓰기 때문에 여기까지 쓰도록 하겠습니다.

뭐 그 외에도 여러가지 좋은 라이브러리들이 많이 있는데 우선은 여기까지만 쓸게요.

참고로, 스프링 3.2.2 버전을 쓰고 있기 때문에 추가적으로 Validation 모듈을 추가해줘야 합니다.

강의 영상에서는 안 나와 있습니다.

이렇게 선택하신 다음에 이 Generate 프로젝트를 딱 해주시면 다운로드를 받습니다.

그리고 이제 다운로드 다 되시면, 인텔리제이를 켜서 Open 누르고,

보통 처음하실 때는 build.gradle 설정 파일을 선택해서 Open을 눌러 주시면 됩니다. 그러면 프로젝트가 쭉 뜨면서 로딩을 할 겁니다.

참고로 말씀드리면 처음 로딩하면 라이브러리를 다운받아야 되기 때문에 엄청 오래 걸립니다. 빠른 분은 3분, 오래 걸리시면 10분 정도 기다리셔야 돼요. 라이브러리를 다 네트워크에서 다운로드 받아야 되니까요.


자 이제 한번 build.gradle을 볼까요.

여기 보시면 플러그인들이 나오죠.

스프링 부트를 쓰시면 기본적으로 'org.springframework.boot' 플러그인을 쓰시게 됩니다.

그리고 스프링 부트가 필요한 것들을 'io.spring.dependency-management' 이렇게 import 했구요. 그 다음에 우리가 java를 쓰니까 'java'도 플러그인 되어있는 걸 확인하실 수 있어요.

그리고 참고로 이 'org.springframework.boot' 플러그인이 라이브러리들에 대한 Dependency랑 버전까지 다 관리를 해주거든요. 그래서 이것만 올리면 다른 라이브러리들 버전까지 다 올라갑니다. 근데 Spring Boot를 어느정도 안다는 가정하에 강의를 하는 거니까 여기에 대해서는 이 정도까지만 말씀드리겠습니다.

그리고 이건 일단 무시하시면 돼요. annotationProcessor롬복(Lombok) 때문에 생긴 세팅입니다.

그 다음에 repositories mavenCentral()에서 라이브러리를 다운로드 받겠다. 라는 설정이고, 그 다음에 의존관계를 보기 전에,

이렇게 추가해주시면 됩니다. 그리고 나서 의존관계를 보면, 저희가 선택했던 것들이 다 들어있어요.

이제 spring-boot-starter 라는 라이브러리를 받으면, 얘가 이제 우리가 고민할 거 없이 필요한 의존관계들을 한 번에 이것저것 다 땡겨오거든요.


일단 이렇게 받고 나면 한번 실행해 봐야죠.

여기에 들어가시면 JpashopApplication 라고 있습니다.

아까 start.spring.io에 있는 generation 코드에 main 메서드가 들어있거든요.

실행해보시면, 뭐가 쭉쭉쭉 올라오면서

Tomcat started on port 8080이 떠있죠.

자 되는지 한번 볼까요? localhost:8080 들어가보시면,

Whiltelabel Error Page가 뜨면 성공한 겁니다. 지금 아무것도 없기 때문에 이렇게 뜨는거죠.

혹시 이거 세팅이 안되실 수 있기 때문에 에러 페이지가 안 나오면,

이렇게 입력하시고 들어가서 확인하시면 됩니다. 여기까지 확인하시면 '아 내가 세팅이 됐구나' 라고 보시면 되구요.

그 다음에 프로젝트를 만들면,

테스트도 기본적으로 하나 만들어놔요. 테스트 케이스를 한 번 실행을 해보면,

뭐 아무것도 없는 텅텅 빈 테스트죠. 그래도 환경 세팅이 잘 됐는지 한번 확인해 보는 차원에서 실행을 해봤습니다.

자 이렇게 되는 거를 확인을 하시면 되구요. 그리고 또 하나, External Libraries

라이브러리들이 쭈욱 다 들어와 있는 걸 확인해 보시면 됩니다.

여기까지 하면 이제 세팅이 성공된 겁니다.

혹시 잘 모르시는 분들을 위해서 설명 드리자면, External Libraries를 보고 '라이브러리들이 왜 이렇게 많이 있지?' 라고 하시면,

이 build.gradle에서 저희가 org.springframework 얘 하나만 땡기면, gradle이 기본적으로 의존관계가 필요한 애들을 막 쭉쭉쭉 한 번에 땡겨오거든요.

spring-boot-starter-data-jpa이면, 얘가 필요한 라이브러리들을 땡기고, 또 얘가 의존한 라이브러리가 또 의존하고 있는 게 있으면 또 땡겨요. 그래서 이만큼이 다 땡겨지는 겁니다. 지금 라이브러리들 다 합친 용량만 해도 장난이 아니겠죠.

그래서 요즘 웹 어플리케이션 개발을 하려면 라이브러리들이 진짜 양이 어마어마한 것 같아요. 그래도 편하죠. 지금은 스프링 부트가 알아서 해주니까 너무 편한 것 같아요.


자 여기까지 세팅을 하고, 그 다음에 Lombok이 한번 세팅이 됐는지 까지만 확인해 볼게요.

자 롬복은 먼저 Plugin을 까셔야 돼요.

'롬복 쓰는 게 좋아요, 안 쓰는 게 좋아요?' 라고 물어보시면 저는 그냥 쓰는 게 좋다고 봐요. 웹 어플리케이션을 개발할 때는 코딩을 해야되는 코드 양도 어마어마하기 때문에 롬복을 쓰면 그런 것도 많이 줄여주고 좋습니다.

이렇게 lombok을 깔아주면 됩니다.

참고로 강의 들으실 때는 가급적이면 다 따라해보세요. 따라치는 건 필수예요. 이게 강의를 듣는 거랑 직접 해보는 거랑 완전 다르거든요.

플러그인에 깔면 이렇게 친절하게 설명서가 되어 있어요.

그리고 롬복을 처음에 까시면 Settings 가셔가지고 꼭 이걸 해줘야 돼요. Enable annotation processing을 꼭 체크하시고 OK 하시면, 이제 세팅이 다 된겁니다.


이제 롬복이 실제로 동작하는지 확인해볼게요. 어떻게 하냐면 아무거나 클래스 하나 만들어 볼게요.

여기에다가 Hello 라는 클래스를 만들고,

이렇게 변수를 만듭니다. 그리고 이거에 대해서,

@Getter, @Setter 한 다음, Application으로 가서

이렇게 main 메서드에다가 Hello를 써서 출력해보면,

잘 돌아갑니다. 롬복이 Getter랑 Setter를 다 그냥 자동으로 만들어 주는 거예요. 원래는 여기다가 cmd + N 해서

getter랑 setter를 다 넣어 가지고 짜야 되는데, 이제 그럴 필요 없고

Lombok을 써서 @Getter, @Setter 해주면 Lombok이 알아서 다 쭉쭉 만들어줍니다.

자 롬복까지 적용을 해봤습니다. 자 이러면은 기본적으로 프로젝트를 생성하는 것은 완료가 된 겁니다.

그 다음 시간에는 저희가 받은 라이블러리들에 대해서 한번 살펴 보겠습니다.

'스프링 > 실전! 스프링 부트와 JPA 활용1' 카테고리의 다른 글

JPA와 DB 설정, 동작확인  (0) 2024.04.13
H2 데이터베이스 설치  (0) 2024.04.02
View 환경 설정  (0) 2024.03.31
라이브러리 살펴보기  (0) 2024.03.31
강좌 소개  (0) 2024.03.26