SpringBoot와 JPA 사용해서 블로그 만들기

SpringBoot / JPA / MySQL / Gradle / Spring Security

환경세팅

1. build.gradle

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
  • Spring Boot Devtools : 자동재시작 (파일이 클래스패스에서 변경 일어났을 때)
  • Lombok : annotation을 통해 getter, setter, constructor 자동생성
  • Spring Data JPA : 데이터베이스를 JPA통해 만듬 (ORM 이용)
  • MySQL Driver
  • Spring Security
  • Spring Web : annotation 사용 + 내장형컨테이너로 톰캣 탑재


// JSTL
implementation 'javax.servlet:jstl'	
// JSP 템플릿 엔진							
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
// Security 태그 라이브러리		
implementation 'org.springframework.security:spring-security-taglibs'

추가 라이브러리들
(SpringBoot는 기본적으로 JSP를 제공해주지 않음)

2. Encoding

  • UTF-8 : 전세계 표준, 하나의 문자를 3byte로 표현

3. application.yml

server:
  port: 8000
  servlet:
    context-path: /blog
    encoding:
      charset: UTF-8
      enabled: true
      force: true
  • port, context-path(진입점), encoding 설정
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
  • jsp파일의 위치설정 : src/main/resources/webapp/WEB-INF/views 폴더 만들어줌
    • src/main/resources/static 이 html 위치 default
    • /static 아래는 정적인 파일만(브라우저가 인식할 수 있는)
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul
    username: cos
    password: 1234
  • DB 연결
  jpa:
    open-in-view: true
    hibernate:
      ddl-auto: create
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
      use-new-id-generator-mappings: false
    show-sql: true
    properties:
      hibernate.format_sql: true
  • JPA 설정
    • ddl-auto: create : table 있으면 drop 하고 만듬, 생성하고서는 update로 바꾸기
    • physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl : 변수명 그대로 DB컬럼에
    • use-new-id-generator-mappings: false : JPA가 정하는 넘버링 전략을 안따라가겠다는 의미
      • Entitiy에서 @GeneratedValue(strategy=GenerationType.IDENTITY)를 통해 연결된 DB의 넘버링 전략을 따라감
    • show-sql: true : console에서 쿼리보임 (한줄로)
    • properties: hibernate.format_sql: true : 여러줄로 쿼리 예쁘게 정렬
      제목 없음


업데이트: