SpringJPA 기본구성

GGOMG·2022년 9월 20일
0

spring boot 및 기본 플러그인

Gradle Project
Spring Boot 2.7.3
Java 11
Dependencies
{
Spring Web(WEB)
Thymeleaf(TEMPLATE ENGINES)
spring Data JPA(SQL)
H2 Database(SQL)
Lombok(DEVELOPER TOOLS)
}

설정 -> lombok설치 -> 어노테이션 프로세서 처리 활성화


라이브러리

cmd에서 라이브러리 살펴보기

gradlew dependencies

핵심 라이브러리

  • 스프링 MVC
  • 스프링 ORM
  • JPA
  • Hibernate
  • 스프링데이터 JPA

    스프링데이터 JPA는 스프링과 JPA를 먼저 이해하고 사용하는 응용기술이다

기타 라이브러리

  • H2 데이터베이스 클라이언트
  • HikariCP (커넥션 풀)
  • thymeleaf (뷰 템플릿)
  • 로깅 (SLF4J&LogBack)
  • 테스트

View 환경설정

Thymeleaf

특징

  • Natural template
    마크업을 깨뜨리지 않고 사용할 수 있다
  • 태그 매칭이 정확하지 않으면 사용하기 어렵다
  • 메뉴얼 숙지가 필요하다
  • 요즘은 서버사이드 렌더링 보다는 React, Vue.js를 사용

스프링 부트 thymeleaf viewName 매핑

  • 'resources/templates/'+ {ViewName} + '.html'
    ex) resources/templates/hello.html

devtools

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

build -> recomplie(다시 컴파일)
서버를 다시 띄우지 않고도 템플릿을 수정사항을 빠르게 적용할 수 있음


JPA와 DB

  • 리포지토리
    DAO와 비슷한 것
  • @PersistenceContext
    스프링 부트가 엔티티 매니저를 주입해줌
  • @Transactional
    테스트에서 사용하면 테스트 후 DB를 롤백함
  • 엔티티 매니저
    JPA에서 제공하는 interface로 spring bean으로 등록되어 있어 Autowired로 사용할 수 있다
  • 영속성 컨텍스트
    엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다

프로젝트 빌드

gradlew clean build

프로젝트 외부 파일로 실행

build/libs
java -jar jpashop-0.0.1-SNAPSHOT.jar

스프링 부트를 통해 복잡한 설정이 자동화 되있다.
persistence.xml 도 없고, LocalContainerEntityManagerFactoryBean 도 없다
스프링 부트를 통한 추가 설정은 스프링 부트 메뉴얼 참고

쿼리 파라미터 로그 남기기

  • org.hibernate.type: trace
application.yml

...
logging:
  level:
    org.hibernate.SQL: debug # logger에 출력
    org.hibernate.type: trace # 쿼리 파라미터 로그 남기기
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

출처
김영한 실전! 스프링 부트와 JPA 활용1 (인프런)

0개의 댓글