[SpringBoot JPA 활용 웹 애플리케이션 개발 : 회원 도메인 개발]

Han Gyul Kang·2022년 4월 10일
0

Inflern_Spring_JPA

목록 보기
5/12

Repository


  • @Repository : component scan을 통해 자동으로 spring bean으로 관리
  • @PersistenceContext : EntityManager를 만들어서 Injection함

JPQL은 SQL과 약간 다름
SQL은 테이블을 대상으로 쿼리 작성
JPQL은 Entity 객체를 대상으로 쿼리 작성

@PersistenceContext는 Lombok을 사용한다면 RequiredArgsConstructor로 대체 가능
단, 필드는 반드시 final로 선언할 것


Service


@Transactional : JPA는 모든 비즈니스 로직이 Transaction 안에서 돌아야 함
javax 보다는 spring이 제공하는 것을 사용하는 것을 권장

  • 읽기에는 @Transactional(readOnly = true)
  • 쓰기에는 @Transactional의 readOnly를 true로 줄 경우 쓰기가 되지 않음

@Autowired

  • 단점 : 필드에 직접 선언하면 해당 필드는 변경할 수가 없음
  • 해결 :
    1. 생성자 Injection을 하면 됨
    2. Lombok에서 제공하는 @RequiredArgsConstructor를 사용하면 됨
      final로 선언되어있는 필드를 모두 Injection 해줌

profile
피아노 치는 개발자

0개의 댓글

관련 채용 정보