게시판 만들기 -4 / JPA, 데이터베이스 연결
in backend
패스트 캠퍼스 강의 게시판 만들기를 따라하며 백엔드 스킬을 늘려보자.
프로젝트 관리
Spring Boot Properites
프로젝트 설정
debug: false
# 디버그 로그 활성화.
# 로그백을 통해서 로그를 찍을 수 있게 세팅 되어있는데 이 옵션을 통해 로그 메시지 출력을 컨트롤할 수 있음
management.endpoints.web.exposure.include: "*"
# actuactor에 감싸여진 보고 싶은 모든 기능을 보기 위해
logging:
level: # 구체적으로 명시하고 싶은 로그를 설정
com.fastcampus.projectboard: debug
org.springframework.web.servlet: debug
# 스프링 웹을 사용할때 엔드포인트 호출시 request,response 로그를 어떤 패키지로부터 오는지 조사할 수 있음.
org.hibernate.type.descriptor.sql.BasicBinder: trace
# 쿼리로그를 디버그로 관찰 가능 jpa를 이용할때 쿼리로그에서 ?로 나오는 부분을 나오게 해주는 부분
spring:
datasource:
url: jdbc:mysql:3306/board
username: miewone
password: park8225
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
# open-in-view: false
defer-datasource-initialization: true
# 테스트용 데이터베이스 만들 수 있게 함.
hibernate.ddl-auto: create
show-sql: true
properties: # 하이버네이트 공부하면서 추가 작성 예정 / Hibernate ORM, Properties
# Spring boot가 제공하지 않는 하이버네이트만에서 제공하는 옵션
hibernate.format_sql: true
# 한줄로 나와야하는 로그를 예쁘게 포매팅해서 출력 해줌
hibernate.default_batch_fetch_size: 100
#
sql.init.mode: always # 프로젝트에서 초기 실행시 리소스에 있는 sql 구문을 실행 시키는 옵션
# data.rest:
# base-path: /api
# detection-strategy: annotated
# thymeleaf3.decoupled-logic: true
h2:
console:
enabled: false
---
spring:
config.activate.on-profile: testdb
# datasource:
# url: ${JAWSDB_URL}
# driver-class-name: com.mysql.cj.jdbc.Driver
# jpa.hibernate.ddl-auto: create
# sql.init.mode: always
공부할거
- AJO
DB
DB Index
JPA, JPA Test
JPA
- 하이버네이트
- 동일성 동등성 검사를 비교할 해쉬코드,이퀄즈 구현 Lombok에서 기본적으로 제공하는 EqualsHashcodes를 사용하지 않는다. 모든 필드를 비교하기 때문에
- Jpa auditing DB에 연결된 로우 데이터 값을 id 값만 검사하게 만드면 좋다.
Spring JPA Annotation
Spring Boot Dependencies
JPA Test
MockMvc
위 링크 참조.
- JPA Buddy
Java Test
@DataJpaTest
@Import(JpaConfig.class)
Slice Test
Slice Test 레이어별로 잘라서, 레이어를 하나의 단위로 보는 테스트.
Java
- Pattern Matching instanceof
- ObjectTypeCastingInJava
- POJO
- Factory Method Pattern
private ArticleComment (Article article, String content) { this.article=article; this.content=content; } public ArticleComment of(Article article, String content) { return new ArticleComment(article,content); }
npe
디비 동향 파악
db engines.com