스프링 부트 - 복잡하고 어려운 스프링 기술을 간결하고 쉽게 사용할 수 있도록 도와 주는 기술
JPA - 강력한 자바 ORM 표준 기술
ORM이란? ORM은 Object Relational Mapping(객체 관계 매핑)의 줄임말이다. Object(객체)는 말 그대로 OOP에서 사용되는 객체 그 자체를 의미하고 Relational(관계)는 흔히 사용하는 관계형 데이터베이스를 의미한다.
즉, 객체와 관계형DB를 매핑해주는 개념이라고 생각하면 된다.
Spring Web : Restful api, Spring mvc, Spring MVC, Tomcat을 기본적으로 내장하고있다.
(웹 어플리케이션 개발할 때 꼭 필요!!!)
Thymeleaf : HTML의 마크업을 깨지 않고 그대로 사용한다는 장점이 있다.
(프리마커, jsp와 달리 웹 브라우저에서도 열림)
기존 버전 2.X에는 ex) br태그 사용시 /br 꼭 붙였어야 했지만
3.X버전에는 개선되었다.(성능 이슈도 개선됨)
Spring Data JPA : Spring Data 와 Hibernate를 가지고 JPA를 사용한다.
H2 Database : 개발 및 테스트 시 유용 가볍고 편리한 DB 웹 화면 제공
Lombok : 반복하는 코드를 줄여준다.
https://www.h2database.com/html/main.html <<다운로드 링크
다운로드 후 (윈도우 유저 기준) cmd창을 열어 H2 DB가 세팅된 파일에 들어가 h2.bat으로 실행을 해주면 localhost:8082가 켜지면서 DB와 연결을 할 수 있게 된다.
처음 DB접속시 JDBC URL :jdbc:h2:~/jpashop
~/jpashop.mv.db로 파일 생성 확인 후 생성이 되었다면
그 이후에는 jdbc:h2:tcp://localhost/~/jpashop 접속
만일 사진과 같은 오류가 생겼다면
cmd -> netstat -ano 해서 port 번호 찾아서
taskkill /f /pid 프로세스 아이디
main/resources 파일에 application.yml파일을 생성해준다.
application.yml로 기본적인 설정을 해준후 기본적인 table 세팅까지도 한다.
github코드 참고
H2에 접속시 application.yml datasource 에 있는 url 주소와 일치하게 들어가야 함
sql 무브먼트(DB에다 select or insert )나 DB와의 커넥션의 흐름을 볼 수 있음
1.application.yml안 logging/level에 org.hibernate.orm.jdbc.bind: trace를 남겨준다.(spring boot 3.X기준)
우린 p6spy를 쓴다.
build.gradle에 가서 dependencies에
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'(spring boot가 미리 세팅해준 라이브러리가 아니므로 버전도 써줘야 한다....)
springboot 3.X 사용자라면
src/resources/META-INF/spring/에
파일명:org.springframework.boot.autoconfigure.AutoConfiguration.imports
내용:com.github.gavlyukovskiy.boot.jdbc.decorator.DataSourceDecoratorAutoConfiguration
src/resources에 spy.properties 파일 추가 후
appender=com.p6spy.engine.spy.appender.Slf4JLogger 라고 입력을 하면 아주 잘 된다!!
command 창에서 cd ~~\jpashop\jpashop gradlew dependencies 의존관계가 prompt창에 쭈우욱 출력이 된다.
prompt 창은 난잡한 감이 없지 않으므로 intellij에 gradle을 눌러 확인해 본다면(runtimeClasspath)
tomcat 및 mvc는 물론 data jpa, thymeleaf까지 의존관계에 있다는 것을 확인할 수 있다.
이 외에도 h2라이브러리 hikariCP등 기타 라이브러리도 확인할 수 있다
(SLF4J에 LogBack을 꽂아서 사용한다.)