
🔻 비영속(Transient)
Memo memo = new Memo(); // 비영속 상태
memo.setId(1L);
memo.setUsername("Robbie");
memo.setContents("비영속과 영속 상태");
🔻 영속(Managed)
em.persist(memo);
🔻 준영속(Detached)
🔻 삭제(Removed)
em.remove(memo);
🔻 SpringBoot 환경에서의 JPA
@PersistenceContext
EntityManager em;
🔻 @Transactional
@Test
@Transactional
@Rollback(value = false) // 테스트 코드에서 @Transactional 를 사용하면 테스트가 완료된 후 롤백하기 때문에 false 옵션 추가
@DisplayName("메모 생성 성공")
void test1() {
Memo memo = new Memo();
memo.setUsername("Robbert");
memo.setContents("@Transactional 테스트 중!");
em.persist(memo); // 영속성 컨텍스트에 메모 Entity 객체를 저장합니다.
}
🔻 Spring Data JPA란?

🔻 Spring Data JPA 사용방법

🔻 Timestamped
🔻 Spring Data JPA 사용방법

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Timestamped {
@CreatedDate
@Column(updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime createdAt;
@LastModifiedDate
@Column
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime modifiedAt;
}
📌 @SpringBootApplication 이 있는 class에 @EnableJpaAuditing 추가!

🔻 Query Methods란?
