Spring
[TIL] 231117 Spring Data JPA, JPA Auditing, Query Method, Entity의 상태
studymode
2023. 11. 17. 23:26
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를 자동으로 생성해줘 그 안의 메서드 이용 가능