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를 자동으로 생성해줘 그 안의 메서드 이용 가능
'Spring' 카테고리의 다른 글
[TIL] 231123 Spring Filter, Spring Security 프레임워크 (2) | 2023.11.23 |
---|---|
[TIL] 231121 Spring 회원가입 구현 (1) | 2023.11.22 |
[TIL] 231116 Spring | 영속성컨텍스트 JPA 트렌젝션 EntityManager (0) | 2023.11.16 |
[TIL] 231114 Spring | ORM, JPA, Hibernate, Entity, 영속성 컨텍스트 (0) | 2023.11.14 |
[TIL] 231113 Spring | 3Layer Architecture, IoC와 DI, Bean (0) | 2023.11.14 |