프로젝트 생성
롬복 적용
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'
개발단계에서는 로그를 남기는게 좋지만
운영 및 배포 단계에서는 생각해봐야 한다.
성능을 저하시키거나 병목현상이 발생할 수 있기 때문에
성능테스트 후 받아들일수 있는 정도면 남겨도되지만
보통 개발단계에서만 로그를 남기는 것을 권장한다.
//스프링 공부할 때 스프링 가이드를 적극 이용할 것.
Spring | Guides
spring.io
인프런 김영한님의 스프링 부트와 JPA 활용1을 듣고 작성한 글입니다.
실전! 스프링 부트와 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 |
댓글