기록하며 성장한다 - 개발, 회고

트랜잭션 3

[ 개발 이슈 해결 ] @Transactional 어노테이션이 있는데, 정상적으로 롤백이 이루어지지 않았던 문제점 해결

1.1. 문제점 필자의 회사는 빅데이터 회사이고, 빅데이터 솔루션을 개발할 때에 Java 와 Spring 을 통해 개발을 진행한다. 이 때 Spring 을 사용 할 때 회사 자체내에서 유지보수를 용이하게 하기 위한 자체 프레임워크를 개발해 두었는데, 해당 프레임워크를 활용하여 개발하는 것이 방침이다. @Override @Transactional public Object mainService(String serviceId, String serviceDtlOpt, Map inputParamMap) throws CustomCommonException { switch (serviceDtlOpt) { case "A": return aMethod(serviceId, inputParamMap); case "B": r..

[ 개발 회고록 ] Self - Invocation 에 대한 간단한 이야기

서론 현재 배달과 관련 된 토이프로젝트를 진행하고 있다. 토이 프로젝트 링크 Transaction 정리 2. 해결 방법 사실 AspectJ 나, 클래스 내 로직을 AOP로 완전히 묶는 방법등이 있지만, 둘 다 추천하는 방식은 아니다. 그래서 제일 좋은건 Self-Invocaton 이 발생하는 경우 자체를 막는 것이다. 그래서 필자는 OrderTransactionService 라는 별도의 서비스 클래스를 만들었고, 위의 order 나 payment 와 같은 메서드를 해당 서비스로 분리해내었다. @Service public class OrderService { // ... @Transactional public void registerOrder() { orderTransactionService.order()..

개발 회고록 2024.01.23

[ 개발 회고록 ] 테스트 코드 작성 시, @Transactional 어노테이션을 사용하는 것에 대한 짧은 생각

현재 필자가 진행하고 있는 배달 토이프로젝트가 있다. ( 프로젝트 링크 > 필자 TIL 블로그 ( 트랜잭션 ) 3. 결론 @Tranasactional 어노테이션을 테스트 코드에서 무조건 쓰지 말라는 것이 아니다. 필요한 부분에서는 충분히 사용할 수 있다. 그러나, 위와 같은 문제점이 발생할 수 있다는 것을 알아야 테스트에서 발생하는 여러 문제들을 사전에 막을 수 있고, 발생하여도 대처할 수 있다. 그래서 특히, @Transactional 이 붙은 실제 서비스 메서드를 테스트 할 때는 더욱 주의해야 한다. 마지막으로 적어도 팀 내에서는 @Transactional 을 테스트 코드에서 사용할 지 말지를 통일 하는 것이 좋다고 생각한다. @Transactional 을 사용하지 않을 거라면, 명시적으로 데이터를 ..

개발 회고록 2024.01.10