Follow Work/SpringbootBoard

[StringBoot] 프로젝트 설정 (1)

ReCode.B 2022. 8. 11. 14:35
728x90

참고 링크 : https://wikidocs.net/book/7601

오라클DB와 intelliJ로 작업하였습니다


스프링부트 프로젝트의 구조

src/main/resources 디렉터리
src/main/resources 디렉터리는 자바 파일을 제외한 HTML, CSS, Javascript, 환경파일 등을 작성하는 공간이다.
templates 디렉터리
src/main/resources 디렉터리의 하위 디렉터리인 templates 디렉터리에는 템플릿 파일을 저장한다. 템플릿 파일은 HTML 파일 형태로 자바 객체와 연동되는 파일이다. templates 디렉터리에는 SBB의 질문 목록, 질문 상세 등의 HTML 파일을 저장한다.
static 디렉터리
static 디렉터리는 SBB 프로젝트의 스타일시트(.css), 자바스크립트(.js) 그리고 이미지 파일(.jpg, .png) 등을 저장하는 공간이다.
application.properties 파일
application.properties 파일은 SBB 프로젝트의 환경을 설정한다. SBB 프로젝트의 환경, 데이터베이스 등의 설정을 이 파일에 저장한다.
src/test/java 디렉터리
src/test/java 디렉터리는 SBB 프로젝트에서 작성한 파일을 테스트하기 위한 테스트 코드를 작성하는 공간이다. JUnit과 스프링부트의 테스팅 도구를 사용하여 서버를 실행하지 않은 상태에서 src/main/java 디렉터리에 작성한 코드를 테스트할 수 있다.
build.gradle 파일
그레이들(Gradle)이 사용하는 환경 파일이다. 그레이들은 그루비(Groovy)를 기반으로 한 빌드 도구로 Ant, Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 빌드 도구이다. build.gradle 파일에는 프로젝트를 위해 필요한 플러그인과 라이브러리 등을 기술한다.


lombok설치

인텔리제이 플러그인 > lombok설치build.gradle에서 dependencie에 룸북추가

    //롬북추가
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

자동 재기동 도구 설치

Spring Boot Devtools는 스트링부트 개발시 도움을 주는 도구이다.
Spring Boot Devtools를 설치하면 서버 재시작 없이도 클래스 변경시 서버가 자동으로 재기동된다.


1. build.gradle 파일에  
dependecies 안에
developmentOnly 'org.springframework.boot:spring-boot-devtools' 의존성을 추가

developmentOnly 'org.springframework.boot:spring-boot-devtools'

2.Compiler 세팅

Build, Exeution, Deployment > Compiler > Build project autiomaically 체크
Advanced Settings > Allow auto-make to start even if developed application is currently running 체크

설명 원본 링크 : https://kim-oriental.tistory.com/8

IntelliJ(인텔리제이) Spring Boot DevTools 적용

안녕하세요, 오리엔탈 킴입니다. IntelliJ(인텔리제이) Spring Boot DevTools 적용하기 Spring Boot DevTools는 소스 변경이 발생할 때마다 빠르게 자동 빌드해줘서 바로바로 반영 결과를 확인할 수 있도록

kim-oriental.tistory.com


컨트롤러

package com.testspring.testspring.controller;

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

@Controller
public class MainController {
  /*@RequestMapping("/sbb")
    public void index() {
    System.out.println("index");*/

  /*@RequestMapping("/sbb")
    @ResponseBody
    public String index() {
        return "index";
    }*/

    @RequestMapping("/sbb")
    @ResponseBody
    public String index() {
        return "안녕하세요 sbb에 오신것을 환영합니다.";
    }
}
ssb파일이 없어도 문구가 화면에 나온다

JPA

데이터베이스를 사용하려면 SQL 쿼리(query)라는 구조화된 질의를 작성하고 실행하는 등의 복잡한 과정이 필요하다. 이때 ORM(object relational mapping)을 이용하면 자바 문법만으로도 데이터베이스를 다룰 수 있다.
즉, ORM을 이용하면 개발자가 쿼리를 직접 작성하지 않아도 데이터베이스의 데이터를 처리할 수 있다.

JPA 란?

스프링부트는 JPA(Java Persistence API)를 사용하여 데이터베이스를 처리한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping)의 기술 표준으로 사용하는 인터페이스의 모음이다.

JPA 환경설정

자바 프로그램에서 데이터베이스에 데이터를 저장하거나 조회하려면 JPA를 사용해야 한다.
하지만 JPA를 사용하기 전에 JPA를 사용하기 위한 준비 작업이 필요하다.

JPA를 사용한 데이터 처리는 조금 후에 자세히 알아본다.

다음처럼 build.gradle 파일을 수정하자.
[파일명: /sbb/build.gradle]

(... 생략 ...)

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}

(... 생략 ...)

그리고 "Refresh Gradle Project"로 변경사항을 적용하면 JPA 라이브러리가 설치된다.

implementation
build.gradle 파일의 implemetation은 해당 라이브러리 설치를 위해 일반적으로 사용하는 설정이다.
implemetation은 해당 라이브러리가 변경되더라도 이 라이브러리와 연관된 모든 모듈들을 컴파일하지 않고 직접 관련이 있는 모듈들만 컴파일하기 때문에 rebuild 속도가 빠르다.
그리고 JPA 설정을 위해 application.properties 파일을 수정하자.
[파일명: /sbb/src/main/resources/application.properties]

# JPA
spring.jpa.database=oracle

spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=false
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
spring.jpa.properties.hibernate.format_sql=true

추가한 항목을 간단하게 살펴보자.

  • .hibernate.dialect - 데이터베이스 엔진 종류를 설정한다.
  • spring.jpa.hibernate.ddl-auto - 엔티티를 기준으로 테이블을 생성하는 규칙을 정의한다.

spring.jpa.hibernate.ddl-auto
위 설정에서 spring.jpa.hibernate.ddl-auto를 update로 설정했다. update와 같은 설정값에 대해서 간단히 알아보자.

  • none - 엔티티가 변경되더라도 데이터베이스를 변경하지 않는다.
  • update - 엔티티의 변경된 부분만 적용한다.
  • validate - 변경사항이 있는지 검사만 한다.
  • create - 스프링부트 서버가 시작될때 모두 drop하고 다시 생성한다.
  • create-drop - create와 동일하다. 하지만 종료시에도 모두 drop 한다.

개발 환경에서는 보통 update 모드를 사용하고 운영환경에서는 none 또는 validate 모드를 사용한다.


오라클 연결

application.properties 설정 + build.gradle 설정 참고링크↓

https://rebornbb.tistory.com/entry/SpringBootIntelliJOracleDB-%EA%B8%B0%EB%B3%B8-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0-Web-Thymeleaf-%E2%98%91?category=1081544

728x90