1) 라이브러리 자동관리
2) 설정 자동화 (xml대체)
3) 내장 Tomcat
4) 독립적으로 실행가능한 JAR
SpringBoot DevTools
Lombok
Spring Web
Thymeleaf
Spring data JPA :
Maria DB Driver(사용할 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
logging.level.org.springframework=info
logging.level.net.ict=debug
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문을 함께 출력.
<장점>
① 완벽한 객체지향적 코드
: SQL문이 아닌 Method를 통해 DB를 조작할 수 있게 해줌으로써 개발자는 비즈니스로직에 집중할 수 있도록 지원.
: 여러 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높임.
② 재사용, 유지보수, 리팩토링 용이
: 매핑하는 정보를 Class로 정확하게 명시해 놓기 때문에 ERD에 대한 의존도가 낮아짐
: 기존객체와 독립적인 객체로 작성되어 재사용 할수 있음.
③ DBMS에 대한 종속성 하락.
: 객체의 자료형 타입까지 사용할 수 있어서 DBMS의 데이터 구조와 객체지향 모델사이의 간격을 좁힐 수 있음.
: 객체에만 집중할 수 있기 때문에 DBMS를 교체하더라도 리스크가 적고 시간도 줄어듦.
<단점>
① ORM이 모든걸 해결할수는 없음.
: 일부 자주 사용되는 대형 SQL문은 속도를 위해 별도의 튜닝이 필요하기 때문에 SQL을 써야하는 경우도 있음.
② 객체- 관계 간의 불일치가 생길 수 있음
: 너무 세분화가 돼다 보면 경우에 따라 DB에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있음.
: 객체지향 프로그래밍 언어의 특징인 상속 개념이 없음.
: primary key로 동일성을 정의하는 RDBMS와 달리 객체식별(A=B)과 객체 동의성(A.eqauls(B))을 모두 정의함.
: 방향성이 없는 외래키를 사용해서 연관성을 나타냄.
: 자바와 RDBMS의 객체에 접근하는 방법이 근본적으로 다름.