일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- RFC723x
- JPA
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- Invalid bound statement (not found)
- @Table
- DB방언
- gitreset
- 네이버로그인API
- gitrevert
- hibernate.dialect
- fixedDelay
- org.apache.ibatis.binding.BindingException
- 캐쉬가능
- SpringBoot
- http
- 김영한JPA
- HTTP3
- 무상태프로토콜
- anyMatch
- @Entity
- Transaction not successfully started
- 네이버 연결된 서비스
- initialDelay
- 매핑정보가없는필드
- HTTPMESSAGE
- KAKAOLOGINAPI
- 멱등활용
- Git
- 데이터베이스 방언
- 자바ORM표준프로그래밍
Archives
- Today
- Total
twocowsong
JPA - hibernate.dialect (트랜잭션) 본문
깃허브 정리 URL : https://github.com/sWineTake/jpa.git
Jpa (JpaMain.class)예제 코드는 아래와같습니다.
public static void main(String[] args) {
// 엔티티 매니저 팩토리 생성
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("jap-study");
// 엔티티 매니저 생성
EntityManager em = emf.createEntityManager();
// 트랜잭션 획득
EntityTransaction tx = em.getTransaction();
try {
// 트랜잭션시작
tx.begin();
// *** 비즈니스 로직 실행 ***
// 트랜잭션 커밋
tx.commit();
}
catch (Exception e) {
tx.rollback(); // 롤백
}
finally {
em.close();
}
// 엔티티 매니저 팩토리 종료
emf.close();
}
코드는 크게 3부분으로 나뉘어 있습니다.
- 엔티티 매니저 설정
- 트랜잭션 관리 (본 글의 주제)
- 비즈니스 로직
트랜잭션 관리
JPA는 트랙잭션 없이 데이터를 변경하면 예외가 발생함으로 항상 트랜잭션 안에서 데이터를 변경해야 합니다.
트랜잭션을 시작하려면 엔티티 매니저에서 트랜잭션 API를 받아야합니다.
// 트랜잭션 획득
EntityTransaction tx = em.getTransaction();
try {
// 트랜잭션시작
tx.begin();
// *** 비즈니스 로직 실행 ***
// 트랜잭션 커밋
tx.commit();
}
catch (Exception e) {
tx.rollback(); // 롤백
}
비즈니스 로직 실행 중 에러가 발생하면 트랜잭션을 롤백합니다.
정상작동 시에는 커밋을합니다.
'IT > JPA' 카테고리의 다른 글
JPQL (0) | 2022.04.29 |
---|---|
JPA - 비즈니스 로직 (0) | 2022.04.28 |
JPA - 엔티티 매니저 (0) | 2022.04.27 |
JPA - hibernate.dialect (데이터베이스 방언) (0) | 2022.04.26 |
JPA persistence.xml (0) | 2022.04.26 |