본문 바로가기
Spring

[TIL] 231117 Spring Data JPA, JPA Auditing, Query Method, Entity의 상태

by studymode 2023. 11. 17.

Entity의 상태

 

Transient (비영속)=> Managed (영속)

  •  persist(entity) : 비영속 상태의 entity를 영속성 컨텍스트에 저장하여 영속 상태를 만들어줌

 

Detached (준영속)

  • detach() : 영속성 켄텍스트에 저장되어있던 Entity를 준영속 상태로 만들어줌 => DB에 업데이트 불가

        - 영속성컨텍스트로 관리될 때만 업데이트가 이루어짐

 

  • clear() : 모든 영속성 컨텍스트 초기화

                      영속성컨텍스트에 있는 모든 엔티티를 준영속 상태로 만듦

                      내용은 비우지만 틀은 유지

 

  • merge() :  Entity를 영속상태로 바꾸어줌                

                       -  Entity가 영속성컨텐스트에 없으면 DB조회, 있으면 내용 추가해서 저장

                       -  DB에 없으면 새로 저장

 

 

 

 

 

Spring Data JPA

Repository인터페이스를 통해 JPA를 간편하게 이용할 수 있다

 

<MemoRepository>

public interface MemoRepository extends JpaRepository<Memo, Long> {

}

⬆️ 레포지토리에서 JpaRepository를 상속받은 후,

 

 

<MemoService>

 public List<MemoResponseDto> getMemos() {
        // DB 조회
        return memoRepository.findAll().stream().map(MemoResponseDto::new).toList();
    }

⬆️ 그에 맞게 서비스 클래스 수정

 

 

 

 

 

JPA Auditing

날짜/시간 추가하는 코드

새로운 클래스를 만들어 사용

@EnableJpaAuditing에너테이션으로 어플리케이션 클래스에 추가

적용하고자 하는 Entity클래스에서 Timestamped를 상속받아 사용

 

 

 

 

Query Method

Spring Data JPA에서 메서드 이름으로 쉽게 SQL을 생성할 수 있도록 Query Method를 제공

예시) List<Memo>findByModifiedAtDesc

SimpleJpaRepository 클래스가 JpaRepository를 자동으로 생성해줘 그 안의 메서드 이용 가능