티스토리 뷰
@PersistenceContext
- 영속성 컨텍스트: 엔티티를 영구 저장하는 환경
- 스프링에는 영속성 관리를 위해 EntityManager존재
- EntityManager를 빈으로 주입할 때 사용
- EntityManager는 영속성 컨텍스트에 엔티티를 보관하고 관리
//MemberRepository
@Repository
public class MemberRepository {
@PersistenceContext
private EntityManager em;
public Long save(Member member){
em.persist(member);
return member.getId();
}
public Member find(Long id){
return em.find(Member.class, id);
}//같은 영속성 context 안에서는 ID가 동일하면 같은 Entity로 식별
}
@Transactional
- 오류가 발생했을 때 모든 작업을 원상태로 되돌릴 수 있음
- 데이터 추가, 갱신, 삭제 등으로 이루어진 작업에 오류가 발생했을 때 모든 작업들을 원상태로 되돌림
- DB와 관련된 클래스, 메서드에 어노테이션 적용
- 테스트 메서드에 어노테이션을 적용하면 메서즈가 종료될 때 자동으로 롤백
@RollBack(false)
- 테스트 코드에서 데이터를 유지
//MemberRepositoryTest
...
@Test
@Transactional
@Rollback(false)
public void testMember() throws Exception{
//given
Member member = new Member();
member.setUsername("memberA");
//when
Long saveId = memberRepository.save(member);
Member findMember = memberRepository.find(saveId);
...
'백엔드' 카테고리의 다른 글
| NCP 사용 후기 (2) | 2023.08.10 |
|---|---|
| 스프링 핵심 원리 이해2 - 비즈니스 요구사항과 설계 (0) | 2023.05.20 |
| MVC (0) | 2023.04.05 |
