image.png

이전에 작성한 DataClient에서 수행했던 기술적인 코드를 OrderRepository라는 클래스 안으로 넣어서 쉽게 오브젝트를 만들면 나머지 모든 과정을 거쳐서 DB에 저장하는 기능을 만들어보자

OrderRepository

OrderRespository

DataConfig

DataClient

public class DataClient {
    public static void main(String[] args) {
        BeanFactory benFactory = new AnnotationConfigApplicationContext(DataConfig.class);
        OrderRepository repository = benFactory.getBean(OrderRepository.class);

        Order order = new Order("100", BigDecimal.TEN);
        repository.save(order);

        System.out.println(order);

    }
}

image.png

에러 발생

중간 작업 단계에서 에러 발생하는 경우(DB 연결 안됨 등) persist 메서드를 빠져나갈 것

Pasted Graphic 5.png

rollback처리 추가

public void save(Order order) {
    EntityManager em = emf.createEntityManager();
    EntityTransaction transaction = em.getTransaction();
    transaction.begin();

    try {
        em.persist(order);

        transaction.commit();
    }
    catch (RuntimeException e) {
        if(transaction.isActive()) transaction.rollback();
        throw e;
    }
    finally {
        if(em.isOpen()) em.close();
    }
}