묻고 답해요
152만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
트랜잭션 전파 기본 - UnexpectRollbackException 관련 질문
만약에 @Transactional 어노테이션을 사용해서 트랜잭션을 만들었을때내부 트랜잭션에서 롤백이 발생했다는건 일반적인 상황에서는 database에서 뭔가 예외가 발생해서 그런거라고 생각되는데,그러면 예외처리기에서 알아서 runtimeException을 상속받은 예외로 바뀔것이고외부 트랜잭션에서도 롤백이 발생한다는건이 경우는 database에서 발생했던 예외가 외부 트랜잭션까지 넘어와서 자연스럽게 롤백된거라고 생각합니다.그래서 UnexpectRollbackException이 발생하지 않는다고 생각됩니다. 제 생각이 맞나요?그러면 UnexpectRollbackException 이 발생할 수 있는 경우는 뭐가 있나요? 강의에서 처럼 의도적으로 문제를 일으키는게 아니면 생각나는 경우가 딱히 없습니다.하지만 제가 생각하지 못하는 것이지 예외가 발생한다는 경우가 있긴 있다는것이겠죠? 그렇다면 트랜잭션을 이용하는 순간부터는 그냥@ControllerAdvice 에서@ExceptionHandler로 UnexpectRollbackException을 캐치해줘서 처리하는 코드를 거의 무조건 작성해야할까요??
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
트랜잭션 내부 호출 질문 관련하여 질문있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]트랜잭션 내부 호출관련하여 질문있습니다. 강의에서 언급해주신대로, 트랜잭션이 적용되지 않은 External()함수가 트랜잭션이 적용된 Internal() 함수를 내부 호출할 경우, Internal() 함수에 트랜잭션이 적용되지 않는 다는 것을 이해했습니다.만약, 이 경우처럼 트랜잭션이 적용된 Login() 함수가 똑같이 트랜잭션이 적용된 getSocialInfo() 메서드를 호출할 경우에는, 어떻게 동작하는지 궁금합니다. 똑같이 내부 호출이기 때문에 무시되는지, 아니면 트랜잭션이 따로 적용되지만 전파 기본 옵션인 REQUIRED에 따라 자동으로 같은 물리 트랜잭션으로 묶이는 방식으로 동작하는지 궁금합니다. 이 경우, getSocialInfo의 트랜잭션 전파 옵션을 NOT_SUPPORT 로 설정한다면 정상적으로 전파 옵션이 적용되는지도 궁금합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
InternalService 빈 등록 질문
트랜잭션 AOP 주의 사항 - 프록시 내부 호출2강의 질문입니다. @TestConfiguration static class InternalCallV1TestConfig { @Bean CallService callService() { return new CallService(new InternalService()); } /*@Bean InternalService internalService() { return new InternalService(); }*/ }위 코드에서 보시는 것과 같이 InternalService를 직접 빈으로 등록해주지 않고 CallService생성자 안에서 InternalService를 주입시켜주면 트랜잭션이 적용되지 않던데, 꼭 InternalService를 빈으로 직접 등록해줘야 하나요??
-
미해결스프링 핵심 원리 - 기본편
@Transactional 안에서 외부 서비스 api call 관련 질문있습니다.
@tranactional 이 붙은 메소드 안에서 외부 서비스 api를 call 해야하는 상황이 있는데컨트롤러 단에서 로직 분리가 힘든 상황입니다. @tranactional 이 붙은 메소드 안에서 아래와 같이 TransactionSynchronizationManager를 선언하고 override한 aftercommit 내부에서 호출하게 될 경우마찬가지로 외부 서비스 api에 장애가 발생했을 때도 본 서비스에 장애로 이어질 수 있을까요?? TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCommit() { // 여기서 외부서비스 api 호출 } });
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
"DB 락 - 개념 이해" 강의 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요. 영한님 이번에도 유익한 강의 해주셔서 감사합니다. 다름이 아니라, 강의 내용 중 트랜잭션 관련하여 질문 드릴 것이 있습니다. DB Lock을 사용하지 않는 상황에서 서로 다른 세션이 같은 데이터를 수정할 때 트랜잭션의 원자성이 깨질 수 있다고 하셨는데, 비슷한 시점에 실행되는 트랜잭션이 서로 영향을 미치는 격리성의 문제로도 볼 수 있을 것 같다는 생각이 들더라구요. 혹시 격리성이 아니라, 원자성이라고 설명해주신 이유가 있으신가요?
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
트랜잭션
공식문서를 읽어보면서.. 자동으로 롤백처리되는 transaction을 쓰려고하는데 Cannot read property 'transaction' of undefined 자꾸 이 에러가 뜨는데 찾아봐도 해결이 안되서 질문드립니다.. 몇시간째 찾아봐도 보이지않아요..ㅜㅜ try { const tran = await sequelize.transaction(async (t) => { const {cate1_idx, cate2_idx, cate3_idx, gosu_name, my_place, distance, gender, hp} = req.body; const [results, created] = await Gosu.findOrCreate({ where: {mem_id: req.id}, defaults: {my_place, distance, gender, hp, gosu_name}, } ,{transaction: t}); const result = results && results[0] ? results[0] : created; res.status(200).json(result); }); }catch (err){ console.log(err); next(err); }});
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
서비스 계층에 트랜잭션 추가 하는 이유
서비스 계층에 @Transactional 을 추가하셨는데 이유가 궁금하고 그 역할이 궁금합니다! Test클래스의 메서드 위에 붙인거랑은 어떤차이가 있는건가요??
주간 인기글
순위 정보를
불러오고 있어요