Framework/Spring

[Spring Boot]JPA 연동 - 1) 프로젝트 셋팅

SHXL2 2021. 11. 3. 11:40
반응형

요즘 많이 사용되는 Spring Boot와 JPA를 연동하여 간단한 예제를 하나 만들어보려고 합니다.

테스트 환경
  • Spring Boot 2.5.6
  • JDK 1.8
  • MariaDB 10.2.22

1. 프로젝트 생성

1-1. New - Spring Boot - Spring Starter Project

Maven, Gradle 중 원하는 자원관리 타입을 선택하면 되고 자바 버전을 맞춰줍니다.

 

1-2. 의존성 추가(이후 필요한 의존성은 따로 추가) - Finish

Spring Boot 버전을 선택하고 기본적으로 필요한 것만 추가하였습니다.(Spring Web, MySQL 또는 MariaDB Driver, JDBC)

 

2. 테스트 페이지 생성

2-1. 프로젝트를 생성하게 되면 아래와 같은 화면을 확인할 수 있습니다.

2-2. 프로젝트 우클릭 - New - Folder - src/main/webapp/WEB-INF/views 추가

 

2-3. views 폴더안에 index.jsp 파일을 생성합니다.

 

2-4. index 페이지를 호출할 Controller를 생성합니다.(com.example.demo 패키지)

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HomeController {
	
	@RequestMapping(value="/")
	public String main() {
		return "index";
	}
	
}

참고로 스프링 부트에서는 <component-scan>없이 Controller를 빈으로 등록할 수 있게 해주는 기능이 있습니다.

프로젝트 생성시(2-1) 프로젝트명(카멜케이스의 규칙) + Application.java 파일이 자동 생성되는 것을 확인할 수 있는데 해당 클래스를 보면 @SpringBootApplication 어노테이션이 있습니다.

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TestBootApplication {

	public static void main(String[] args) {
		SpringApplication.run(TestBootApplication.class, args);
	}
}

해당 어노테이션 소스를 확인해보면 @ComponentScan 어노테이션이 있습니다. 이 어노테이션이 main() 메소드가 포함된 TestBootApplication 클래스가 속하는 패키지를 기준으로(com.example.demo) 하여 빈 등록을 처리합니다.

 

3. 외부설정과 의존성 주입

3-1. src/main/resources/application.properties 설정

Spring Boot는 어플리케이션 작동시 application.properties 파일에 정의된 내용을 로드합니다. 이 때 jsp 페이지 처리를 위해 jsp 경로와 확장자를 등록해주는 작업입니다.

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

 

추가적으로 1-2에서 추가한 jdbc로 인해 에러를 방지하기 위해 DB 연결을 미리해줍니다.

# DB
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/DBNAME
spring.datasource.username=root
spring.datasource.password=1234

DB연결 오류시

 

3-2. pom.xml 설정

1-2에서 추가한 의존성(spring-boot-starter-web)에 의해 tomcat을 내장하고 있지만 jsp 파일을 구동할 수 있는 엔진은 포함하고 있지 않습니다. 따라서 jsp 엔진 역할을 하는 라이브러리를 추가합니다.

<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

 

4. 서버 구동

4-1. 프로젝트 우클릭 - Run As - Spring Boot App

어플리케이션이 정상 작동하면 아래와 같이 로그가 조회됩니다.

 

4-2. localhost:8080 확인

application.properties에서 포트를 따로 설정하지 않았다면 기본 포트는 8080입니다.

index.jsp

 

jsp 엔진이 없는 경우 발생할 수 있는 에러

 

참고자료
 

스프링 부트(Spring Boot) JPA 게시판 - CRUD 구현하기 (With. MySQL)

웹 사이트 개발에서 데이터베이스는 떼어놓을 수 없는 핵심적인 요소로 자리 잡고 있습니다. 그만큼 웹 개발자들은 DB와 관련된 로직을 작성하는 데 어마어마한 시간을 쏟을 수밖에 없는데요.

congsong.tistory.com

 

Spring Boot에서 JPA 사용하기

JPA는 여러 ORM 전문가가 참여한 EJB 3.0 스펙 작업에서 기존 EJB ORM이던 Entity Bean을 JPA라고 바꾸고 JavaSE, JavaEE를 위한 영속성(persistence) 관리와 ORM을 위한 표준 기술이다. JPA는 ORM 표준 기술로 Hibe

velog.io

 

Spring Boot 에서 JPA 사용하기 (MySQL 사용)

MySQL 설정 MySQL 설치 MySQL 설치는 아래 글 참고 2020/10/30 - [Database/RDB] - MySQL 설치하기 (Mac OSX) MySQL 설치하기 (Mac OSX) MySQL 설치 본 글에서는 Homebrew 를 이용하여 MySQL 을 설치한다. $ brew..

memostack.tistory.com

 

[3. Spring boot] 스프링 부트에서 JPA로 DB를 다뤄보자

오늘날 관계형 DBMS(Oracle, MySQL 등등..)을 안쓰는 곳이 없을 정도로 데이터를 관리하는 부분에서 굉장히 많은 부분을 차지합니다. 그러다 보니 모든 코드가 어플리케이션 코드가 아닌 SQL 중심으로

velog.io


+피드백은 언제나 환영입니다 :)

반응형