Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- spring서버
- 최종 프로젝트
- json
- 스프링부트오류
- git
- Filter
- Spring Spring boot 차이
- JPA주의사항
- ERD 작성
- REST란
- json gson 차이
- Error creating bean with name
- 스프링 부트 공식 문서
- JoinColumn
- uncheck Exception
- REST API 규칙
- 빈생성안됨
- github
- 스프링 부트 기능
- Q 클래스
- @IdClass
- 1차캐시
- JPA
- queryDSL
- 인텔리제이
- 복합키
- Unsatisfied dependency
- jpa에러
- jwt메서드
- jpa회원가입
Archives
- Today
- Total
Everyday Dev System
영속성 컨텍스트 본문
EntityManagerFactory는 DB 하나당 하나만 생성된다.
PK는 Entity를 구분하기 위한 식별자로,
영속성 컨텍스트에서 PK로 Entity를 식별한다.
import com.sparta.entity.Memo;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.EntityTransaction;
import jakarta.persistence.Persistence;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class EntityTest {
EntityManagerFactory emf;
EntityManager em;
@BeforeEach
void setUp() {
emf = Persistence.createEntityManagerFactory("memo");
em = emf.createEntityManager();
}
@Test
@DisplayName("EntityTransaction 성공 테스트")
void test1() {
EntityTransaction et = em.getTransaction(); // EntityManager 에서 EntityTransaction 을 가져옵니다.
et.begin(); // 트랜잭션을 시작합니다.
try { // DB 작업을 수행합니다.
Memo memo = new Memo(); // 저장할 Entity 객체를 생성합니다.
memo.setId(1L); // 식별자 값을 넣어줍니다.
memo.setUsername("Robbie");
memo.setContents("영속성 컨텍스트와 트랜잭션 이해하기");
em.persist(memo); // EntityManager 사용하여 memo 객체를 영속성 컨텍스트에 저장합니다.
et.commit(); // 오류가 발생하지 않고 정상적으로 수행되었다면 commit 을 호출합니다.
// commit 이 호출되면서 DB 에 수행한 DB 작업들이 반영됩니다.
} catch (Exception ex) {
ex.printStackTrace();
et.rollback(); // DB 작업 중 오류 발생 시 rollback 을 호출합니다.
} finally {
em.close(); // 사용한 EntityManager 를 종료합니다.
}
emf.close(); // 사용한 EntityManagerFactory 를 종료합니다.
}
}
영속성 컨텍스트는 Transaction을 적용하고 있다.
EntityTransaction et = em.getTransaction(); // EntityManager 에서 EntityTransaction 을 가져옵니다.
et.begin(); // 트랜잭션을 시작합니다.
-- 중략 --
et.commit(); // 오류가 발생하지 않고 정상적으로 수행되었다면 commit 을 호출합니다.
et.rollback(); // DB 작업 중 오류 발생 시 rollback 을 호출합니다.
'내배캠 주요 학습 > Spring 입문' 카테고리의 다른 글
영속성 컨텍스트의 기능 - 3가지 (0) | 2023.06.14 |
---|---|
영속성 컨텍스트 활용 - persist() , find() , remove() (0) | 2023.06.14 |
ORM과 JPA 활용 (0) | 2023.06.14 |
@Service와 @Repository (0) | 2023.06.13 |
IoC와 DI(의존성 주입) (0) | 2023.06.13 |