오늘은 취업 상담을 받았다 (자기소개서 작성 요령)
오늘은 JPA를 공부할 것이다.
ORM(Object-Realational-Mapping)
JPA
Spring-Data-Jpa
를 사용한다.게시글, 댓글, 회원 , 정산, 결제 등 소프트웨어에 대한 요구사항 || 문제 영역.
@Getter
: lombok의 어노테이션
`@NoArgsConstructor
: lombok의 어노테이션
@Builer
: lombok의 어노테이션
@Entity
: JPA의 어노테이션
@id
:
@GeneratedValue
:
Generation.Type.IDENTITY
옵션을 추가해야 auto_increment가 된다. @Column
: 데이터의 칼럼을 나타낸다. 굳이 선언은 하지 않아도 되지만, 추가적으로 필요한 옵션이 있는 경우 선언한다.Ex) 기본값 사이즈 및 타입 변경,
일반적으로 MyBatis 등에서 불리는 Dao와 유사하다. 하지만 JPA에서는 Repository라 불리며
Interface
로 생성한다.
public interface Repository_Name extends JpaRepository<Entity Class, PK_Type>
JpaRepository
를 상속하면 기본적인 CRUD가 자동으로 생성된다.@After
@repository.save
@repository.findAll()
테스트 코드의 root는 메인 패키지와 항상 같아야 한다. 처음 테스트 코드를 책으로 배우면서 직접 할 때마다 한 두번씩 오류가 났는데 모두 내가 파일이 있을 절대경로를 잘못 지정해놔서 생긴 오류였다. 때문에 각 클래스의 package 선언부를 모두 바꿔줘야 하는 불상사가 일어났다. 급한 마음을 버리고 꼼꼼하게 경로를 단디 잡아놔야겠다.
실행된 쿼리를 로그로보는 방법
src/main/resources ++ application.properties
spring.jpa.show_sql = true
작성2-1. 출력될 로그를 MySQL 버전으로 변경
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
작성
@WebMvcTest
와 @SpringBootTest
+ @TestRestTemplate
의 차이
- JPA기능이 작동하지 않을 때 ▶ @WebMvcTest
- JPA까지 한번에 테스트 해야할 때 ▶ @SpringBootTest + @TestRestTemplate
적용하기 전, Spring의 웹 계층을 파악해 볼 필요가 있다
도메인에서 비즈니스 로직을 처리해야 하는 이유 ?
도메인을 사용하면 서비스 메소드는 트랜잭션과 도메인 간의 순서만 보장한다.
@AutoWired
@Setter
생성자
⭐ 권장 >> lombok의 어노테이션@RequiredArgsConstructor
로 생성