본문 바로가기

Spring&SpringBoot31

트랜잭션 개선 과정 분석 (feat. 서비스 추상화, 책임 주도 접근법) 목차 트랜잭션 적용 확인을 위한 테스트 트랜잭션 적용을 위한 두번의 도약 트랜잭션 동기화 : JDBC를 사용하는 서비스 코드에서 Connection 객체의 전파 막기 트랜잭션 서비스 추상화 : 트랜잭션 처리 방법에 따른 차이를 추상화하는 PlatformTransactionManager 🌱 데이터 중심 접근법과 책임 중심 접근법에 따라 트랜잭션 개선 과정 분석하기 🌱 서비스 추상화와 단일 책임 원칙 트랜잭션 적용 확인을 위한 테스트 현재 UserService에는 트랜잭션이 적용되지 않은 상태이다. 따라서 upgradeLevels와 같이 여러 sql문을 실행하는 메소드를 실행하던 중에 예외나 오류가 발생해 실행이 중단되면, 어떤 user에는 업그레이드가 반영되고 어떤 user에는 업그레이드가 반영되지 않을 .. 2023. 4. 4.
(미완) 데이터 액세스 기술 추상화하기 개요 (이 내용은 추후 로드 존슨의 Expert One-On-One J2EE Design and Development 9장을 읽어본 후에 다루려고 합니다.) 저번 포스팅에 이어 DataAccessException이 어떻게 데이터 액세스 기술 종류의 차이를 추상화하는지 알아보자. DataAccessException이 데이터 액세스 기술마다 다르게 던지는 예외 클래스를 추상화하여 동일한 상황에 일관된 런타임 예외를 던지는지 알아본다. 토비의 스프링 4장 2절의 목표는 DataAccessException이 어떻게 기술마다 다른 예외 클래스를 발생 맥락으로 묶어 맥락에 대응하는 추상적인 예외를 던지는지 이해하는 것이다. 이 과정에서 사용되는 런타임 예외 중심의 낙관적인 예외 처리 전략도 확인할 수 있다. ===.. 2023. 3. 26.
DB 종류로부터 예외 추상화하기 (feat. SQLExceptionTranslator 뜯어보기) 목차 1. 개요 2. DB 종류 추상화하기 3. SQLException -> DataAccessException : 예외 전환 4. JdbcTemplate의 DB 추상화 전략 : 데이터베이스 벤더의 오류 코드 활용해서 예외 포장하기 5. JdbcTemplate에서 예외 전환 찾기 6. SQLExceptionTranslator 분석하기 - a. 예외 판단에 필요한 정보를 가진 클래스 확인 - b. 템플릿 메소드 패턴 적용하여 번역기의 에러 매핑 코드 추상화 - c. 커스텀 예외 정의해보기 : 세 가지 방법 소개 7. 마치며 개요 스프링이 제공하는 DataAccessException은 DB 종류나 데이터 액세스 기술 종류의 차이를 추상화한다. DB 종류 추상화에서는 JdbcTemplate이 SQLExcept.. 2023. 3. 26.
좋은 예외 처리에 대한 고찰 예외에 대한 오해와 진실 좋은 예외 처리 방법을 살펴보기에 앞서, 체크 예외와 런타임 예외에 대해서 내가 가지고 있던 오해들을 해결해보고자 한다. 보시는 분은 답답할 수 있겠지만.. 이건 나를 위한 공부니까요.. 썰 풀어보겠습니다. 복구 불가능한 체크 예외? 이건 사실 이전 게시글 내용을 작성하면서 해소한 의문이다. 그래도 정리해봐야지. 분명히 체크 예외는 복구할 가능성이 있는 상황을 가정한다고 했다. 그런데 책을 읽을수록 이게 웬걸? SQLException은 체크 예외인데 복구할 수 있는 방법이 없다네? 그럼 이걸 대체 왜 체크 예외로 만든거야? 물음표 백만개인 상태로 쭉 읽었다. 알고보니 자바 초기에 사용되던 독립형 애플리케이션에서는 상황에 대한 복구 가능성보다는 복구 강제에 초점을 둔 것 같다. 그.. 2023. 3. 21.
낙관적인 예외 처리 이번주에 토비 4장 예외를 읽으면서 정말 많은 생각을 했다. 머리속에 안개가 낀 것처럼 막막했는데 조금씩 풀어보려고 한다. 지금까지 예외에 대해서 깊이 고민해본 적 없이, 프로그래머의 의도와 다르게 동작하는 모든 상황에 대해 무조건 예외를 던졌는데 반성한다. 첫번째 절에서는 예외의 종류와 처리 방법, 예외 처리 전략을 다루었다. 추가적으로 예외에 대한 조사를 하면서 어떻게 하면 예외를 잘 사용할 수 있을지 고민한 내용을 공유해보도록 하겠습니다. (이 내용은 다음 게시물에 이어집니다) Error vs Exception 에러와 예외의 차이는 프로그램에서의 처리 가능 여부다. 에러는 프로그램에서 처리할 방법이 없지만, 예외는 프로그램에서 처리가 가능하다. Error java.lang.Error 클래스의 서브클.. 2023. 3. 21.
JdbcTemplate에서 콜백 찾기 스프링은 Jdbc를 이용한 dao에서 사용할 수 있도록 준비된 다양한 템플릿과 콜백을 제공한다. 자주 사용되는 패턴을 가진 콜백은 다시 템플릿에 결합시켜서 간단한 메소드 호출만으로 사용이 가능하도록 만들어져있다. 공식 문서 Data Access Data Access The Data Access Object (DAO) support in Spring is aimed at making it easy to work with data access technologies (such as JDBC, Hibernate, or JPA) in a consistent way. This lets you switch between the aforementioned persistence technologies fairly ea.. 2023. 3. 13.