본문 바로가기
JPA

JPA 프로젝트 환경설정

by ppirae 2022. 4. 17.

프로젝트 생성

롬복 적용

1. Prefrences plugin lombok 검색 실행 (재시작)

2. Prefrences Annotation Processors 검색 Enable annotation processing 체크 (재시작)

3. 임의의 테스트 클래스를 만들고 @Getter, @Setter 확인

 

IntelliJ Gradle 대신에 자바 직접 실행

최근 IntelliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이다. 이렇게 하면 실행속도가 느리다. 다음과 같이 변경하면 자바로 바로 실행해서 실행속도가 더 빠르다.

Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle

Build and run using: Gradle -> IntelliJ IDEA

Run tests using: Gradle -> IntelliJ IDEA


라이브러리 살펴보기

  • 핵심 라이브러리
    • 스프링 MVC
    • 스프링 ORM
    • JPA, 하이버네이트
    • 스프링 데이터 JPA

View 환경 설정

요즘은 JSP 보다 thymeleaf 를 사용하는 추세이다.

thymeleaf의 장점은 HTML의 마크업을 해치지않고 사용(Natural templates)이 가능하다.

(요즘은 admin을 만들때 vue.js나 react를 사용한다.)

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model) {
        model.addAttribute("data", "hello!!!");
        return "hello";
    }
}

retrun "hello"를 해도 templates/hello.html (view)이 열리는 이유는

스프링 부트의 thymeleaf가 viewName을 자동으로 매핑 해주기 때문이다.

resources:templates/ +{ViewName}+ .html

 

static 폴더 아래는 아예 렌더링을 거치지 않는 순수한 정적인 html 파일을 넣고,

templates 폴더 아래는 렌더링을 거치는 동적인 html 파일을 넣는다.

 

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

//참고: spring-boot-devtools 라이브러리를 build.gradle에 추가하면, html 파일을 컴파일만 해주면 서버 재시작 없이 View 파일 변경이 가능하다.

인텔리J 컴파일 방법: 메뉴 build -> Recompile


H2 데이터베이스 설치

개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공

저번 스프링 강의때 설치하여 패스.


 

JPA와 DB 설정, 동작확인

사실 JPA 기본편을 듣지않고 활용편을 듣다보니 이해가 잘 안가는 부분이 많았는데

중요하다고 생각되는 부분 몇군데를 적어보았다.

 

엔티티 매니저를 통한 모든 변경은 항상 트랜잭션 안에서 이루어져야 한다.

@Transactional 을 추가하는데 springframework를 사용하는걸 추천 -> 사용할 수 있는 옵션이 많다.

@Transactional 어노테이션은 @Test 코드 내에 있으면 테스트가 끝난 후 롤백한다. -> 따라서 H2 DB에 내용이 없음

@Rollback(false) 어노테이션을 추가하면 테스트 결과를 DB에서 눈으로 볼 수 있다.

 

같은 영속성 컨텍스트 안에서는 id 값이 같으면 같은 엔티티로 인식한다. (1차 캐시 ?)

findMember == member 랑 같음.

 

쿼리 파라미터 로그 남기기 <- 이게 굉장히 좋다.

외부 라이브러리 사용 (p6spy)

https://github.com/gavlyukovskiy/spring-boot-data-source-decorator

스프링 부트를 사용하면 이 라이브러리만 추가하면 된다.

implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

 

개발단계에서는 로그를 남기는게 좋지만

운영 및 배포 단계에서는 생각해봐야 한다.

성능을 저하시키거나 병목현상이 발생할 수 있기 때문에

성능테스트 후 받아들일수 있는 정도면 남겨도되지만

보통 개발단계에서만 로그를 남기는 것을 권장한다.


//스프링 공부할 때 스프링 가이드를 적극 이용할 것.

https://spring.io/guides

 

Spring | Guides

 

spring.io


인프런 김영한님의 스프링 부트와 JPA 활용1을 듣고 작성한 글입니다.

https://inf.run/Q67u

 

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 강의

실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다., - 강

www.inflearn.com

 

'JPA' 카테고리의 다른 글

JPA 웹 계층 개발 - 홈 화면과 레이아웃  (0) 2022.04.22
JPA 주문 도메인 개발  (0) 2022.04.20
JPA 회원, 상품 도메인 개발  (0) 2022.04.19
JPA 도메인 분석 설계  (0) 2022.04.19
JPA 활용 1편을 들어가며.  (0) 2022.04.16

댓글