SpringBoot

천소진·2023년 3월 7일
0

Study

목록 보기
28/29

Spring Boot

  • Spring을 더 쉽게 이용하기 위한 도구.
  • 실행환경이나 의존성 관리등에 쓰는 에너지를 줄이고 비즈니스 로직을 만들기위한 프로그래밍에 에너지를 더 쓸수 있도록하기 위해개발.

특징

1) 라이브러리 자동관리
2) 설정 자동화 (xml대체)
3) 내장 Tomcat
4) 독립적으로 실행가능한 JAR

프로젝트 구성시 기본설정 추가사항 (Check)

① depengency 항목

SpringBoot DevTools
Lombok
Spring Web
Thymeleaf
Spring data JPA :
Maria DB Driver(사용할 DB로 선택)

② DB 정보추가

src ─ main ─ java ─ resources ─ applcation.properties에 DB 정보 추가

server.port=8081
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3305/webdb
spring.datasource.username=sojin
spring.datasource.password=sojin

③ Log4j2 설정 추가

logging.level.org.springframework=info
logging.level.net.ict=debug

④ JPA 설정 추가

spring.jpa.hibernate.ddl-auto=update (DDL문을 처리할 것인지 설정)

  • none=처리하지않음, create-drop=실행하고 종료시에 객체 모두 삭제,
  • create=실행시마다 새롭게 객체생성
  • update= 기존과 다르게 변경된 부분이 있다면 새로 생성
  • validate=변경된 부분만 알려주고 종료

spring.jpa.properties.hibernate.format_sql=true : 실제로 실행되는 SQL을 formatting해서 알아보기 쉽게 출력.

spring.jpa.show-sql=true : JPA가 실행하는 SQL문을 함께 출력.

SpringBoot사용시 중요한 개념

1. ORM(Object-Relation Mapping)

  • 어플리케이션 클래스(객체)와 RDB(Relation DateBase)의 테이블을 매핑함.
    ==> 객체를 테이블에 자동으로 주입해주므로 영속성 가지도록 해줌.
  • 객체간의 관계를 바탕으로 SQL문을 자동으로 생성해주므로 클래스와 테이블의 불일치 문제를 해결.

<장점>
① 완벽한 객체지향적 코드
: SQL문이 아닌 Method를 통해 DB를 조작할 수 있게 해줌으로써 개발자는 비즈니스로직에 집중할 수 있도록 지원.
: 여러 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높임.

② 재사용, 유지보수, 리팩토링 용이
: 매핑하는 정보를 Class로 정확하게 명시해 놓기 때문에 ERD에 대한 의존도가 낮아짐
: 기존객체와 독립적인 객체로 작성되어 재사용 할수 있음.

③ DBMS에 대한 종속성 하락.
: 객체의 자료형 타입까지 사용할 수 있어서 DBMS의 데이터 구조와 객체지향 모델사이의 간격을 좁힐 수 있음.
: 객체에만 집중할 수 있기 때문에 DBMS를 교체하더라도 리스크가 적고 시간도 줄어듦.

<단점>
① ORM이 모든걸 해결할수는 없음.
: 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 SQL을 써야하는 경우도 있음.

② 객체- 관계 간의 불일치가 생길 수 있음
: 너무 세분화가 돼다 보면 경우에 따라 DB에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있음.
: 객체지향 프로그래밍 언어의 특징인 상속 개념이 없음.
: primary key로 동일성을 정의하는 RDBMS와 달리 객체식별(A=B)과 객체 동의성(A.eqauls(B))을 모두 정의함.
: 방향성이 없는 외래키를 사용해서 연관성을 나타냄.
: 자바와 RDBMS의 객체에 접근하는 방법이 근본적으로 다름.

2. JPA (Java Persistence API)

  • ORM고 관련된 인터페이스의 모음
  • Java 진영에서 표준 ORM으로 채태되어있음.
  • ORM을 구체화시킨 스펙을 포함하고 있고, 클래스와 매핑을 해주기 위해 사용되는 프레임워크
  • Hibernate가 가장 많이 사용되는 ORM Framework

3. Thymeleaf

  • SpringBoot의 자동설정을 지원하는 웹 템플릿엔진
  • HTML, XML, JS, CSS, 기본 텍스트까지 지원
  • 확장성이 좋고 유지보수가 쉬운 템플릿을 쉽게 만들도록 도와줌
  • HTML 디자인에 전혀 영향을 미치지 않고 HTML 생성 가능.
  • HTML 태그에 속성을 추가하여 페이지에 동적으로 값 추가 및 처리 가능.

0개의 댓글