Rollback은 @Transactional 어노테이션으로 보통 하게 되는데 UncheckedException인 RuntimeException때 default로 rollback된다. CheckedException인 다른 Exception은 throw를 해도 rollback되지 않는다. NullPointerException이 Runtime Exception의 예. @Transactional 어노테이션 방식과 EntityManager를 써서 begin, commit, rollback하는 방식이 있다. 한 서비스에서만 가능한듯 하다. 서비스마다 IoC컨테이너가 다르고 빈을 공유하지 않기 때문인듯 하다. 같은 트랜잭션으로 처리가 안 되는 것 같다. 한번 간단한 예제를 만들어서 시도해봐야겠다. woowabros...