본문 바로가기
Spring Boot

스프링 부트(Spring Boot) JPA 게시판 - 프로젝트 생성하기 [Thymeleaf, MariaDB, IntelliJ, Gradle]

by 도뎡 2023. 9. 2.
반응형

본 JPA 게시판 프로젝트 관련 안내사항

  • JDK는 11 버전을 사용합니다.
  • 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다.
  • 프로젝트(애플리케이션) 설정은 자바(Java) 기반의 설정을 사용합니다.
  • 데이터베이스는 MariaDB를 사용합니다.
  • DB와의 통신 역할에는 Spring Data JPA를 사용합니다.
  • 개발 도구(IDE)는 인텔리제이(IntelliJ)를 사용합니다.
  • 프로젝트 빌드 도구는 그레이들(Gradle)을 사용합니다.

 

본 글은 Spring Boot 프로젝트 생성 후 곧바로 실습할 수 있는 환경이 모두 구성되어 있다는 가정하에 진행됩니다.
(JDK 설치, workspace 세팅, Java 환경 변수 설정, IDE 설치, MariaDB 설치, DBMS 툴 설치)

개발환경 설정이 필요하시다면 첫 번째 링크를(5번까지만 진행), MariaDB 설치가 필요하시다면 두 번째 링크를 참고하시면 도움이 되실 겁니다.

 

Spring Boot 개발환경 설정하기

 

스프링 부트(Spring Boot) - 게시판 개발환경 설정하기 [Thymeleaf, MariaDB, IntelliJ, Gradle, MyBatis]

본 게시판 프로젝트 관련 안내사항 화면 처리는 HTML5 기반의 자바 템플릿 엔진인 타임리프(Thymeleaf)를 사용합니다. 프로젝트(애플리케이션) 설정은 자바(Java) 기반의 설정을 사용합니다. 데이터베

congsong.tistory.com

 

윈도우(Windows10)에 MariaDB 설치하기

 

윈도우(Windows)에 MariaDB 다운로드(Download) & 설치(Install)하기

1. MariaDB란? MariaDB는 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 오라클(Oracle)이 MySQL을 인수한 후, 라이센스 문제를 해결하기 위해 MySQL 창시자와 몇몇 개발자들이 오라클을 나와

congsong.tistory.com

 

고마웠어 MyBatis.

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

작성되는 DB 관련 로직에는 반복적인 코드가 많을뿐더러, 생산성 면에서도 오래도록 문제가 되어왔습니다. 일반적으로 스프링 기반의 프로젝트에서 데이터의 CRUD 쿼리는 MyBatis로 처리했었고, 모든 테이블에 대한 CRUD 쿼리를 전부 직접 작성했었는데요. 이는 결코 쉬운 일이 아니었습니다.

그러다, 언제부터인가 여기저기서 JPA에 대한 이야기를 자주 들었고, 동료 개발자분이 JPA로 프로젝트를 진행하시는 걸 보고, '역시 트렌드를 따라야겠다!'라고 마음을 먹었습니다. 그리하여 JPA와 관련된 여러 자료들을 찾아보았지만, 과거의 저에게는 진입장벽이 너무나도 높았습니다.

사실, JPA를 그나마 JPA 답게 사용하게 된 지는 오래되지 않았지만, 제 글을 읽어주시는 여러분은 과거의 저와 같은 폭풍 삽질을 경험하지 않으시길 바라는 마음으로 최대한 쉬운 방향으로 감히 리드를 해 드려 볼까 합니다. (네가 뭔데!)

이제 MyBatis와 동기 방식의 프로젝트는 머릿속에서 지워버리시고, 지금부터 JPA와 Rest API를 이용한 비동기 방식의 게시판을 구현하는 방법을 알려드리겠습니다.

참고로, 클라이언트 사이드에서는 자바스크립트(JavaScript) 관련 라이브러리나 프레임워크를 이용하지 않고, 순수 자바스크립트 문법만을 이용해서 화면과 데이터를 처리합니다.

그럼, JPA 게시판! 지금 바로 시작하겠습니다.

 

1. JPA(Java Persistence API)란 무엇일까?

JPA는 자바 진영에서 개발된 기술로, 자바 객체와 관계형 데이터베이스 사이의 데이터 매핑 및 관리를 위한 ORM(Object Relational Mapping) 기술의 표준(Interface)입니다.

ORM은 JPA와 같은 표준(Interface)을 구현한 라이브러리 또는 프레임워크를 이용해서 실제로 자바 객체와 데이터베이스의 데이터를 매핑해 주는 도구로, ORM을 이용하면 자바 객체의 메서드를 통해 데이터베이스 작업을 수행할 수 있습니다.

JPA 스펙의 대표적인 구현체로는 하이버네이트(Hibernate)가 있으며, 쉽게 말해 JPA는 자바의 인터페이스이고, 하이버네이트는 이를 구현한 클래스와 같다고 볼 수 있습니다.

 

2. Spring Data JPA란 무엇일까?

글 서두에서 본 게시판 프로젝트는 DB와의 통신을 Spring Data JPA로 한다는 말씀을 드렸습니다. Spring Data JPA는 JPA를 사용하기 편리하게 해주는 라이브러리로, JPA를 한 단계 더 추상화한 Repository라는 인터페이스를 제공합니다.

Spring Data JPA에서 포인트는 Repository 인터페이스이며, 개발자는 Repository를 통해 일반적인 CRUD 작업을 쉽게 수행할 수 있습니다. 또한 Repository에 정해진 규칙대로 메서드를 생성하면, 이에 알맞은 구현체를 자동으로 생성해 주기도 합니다.

 

3. 프로젝트 생성하기

인텔리제이 Ultimate 버전을 사용하시는 분들은 IDE에서 생성해 주시면 되고, Communituy 버전이나 이클립스를 사용하시는 분들은 스프링 이니셜라이저에서 프로젝트를 생성해 주시면 됩니다. 여기서는 IDE에서 프로젝트를 생성합니다.

 

3-1) 프로젝트 스펙 설정

가장 먼저 프로젝트 기본 스펙입니다.

프로젝트 기본 스펙 설정

 

3-2) 스프링 부트 버전 & 라이브러리 설정

다음은 스프링 부트 버전과 JPA 게시판에서 사용할 라이브러리입니다. 부트 3 버전은 JDK 17 이상의 버전을 필수로 요구하기 때문에 2.7.x를 사용합니다.

Spring Boot 버전, 라이브러리 설정

 

3-3) build.gradle 구조

다음은 생성된 프로젝트의 build.gradle 구조입니다.

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.7.15'
    id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.study'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '11'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}

 

 

마치며

여기까지 JPA 게시판 프로젝트 구성이 완료되었습니다. 지금부터는 실전입니다. 다음 글에서는 HikariCP 데이터 소스를 이용해서 애플리케이션과 MariaDB를 연동할 예정인데요. 진행 순서는 다음과 같습니다.

 

  • 게시판에 사용될 회원 테이블을 생성한다.
  • 생성된 회원 테이블과 자바 클래스를 매핑한다. (ORM 기법)
  • Spring Data JPA의 Repository를 이용해서, DB에 저장된 데이터를 컨트롤한다. (CRUD 처리)

 

최대한 빠른 시일 내로 다음 글에서 뵙도록 하겠습니다. 오늘도 방문해 주신 여러분께 진심으로 감사의 말씀을 드립니다. 행복한 하루 보내세요 :)

반응형

댓글