일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 피보나치 예제
- katalon
- tomcat log
- javascript 자동완성
- katalon 자동화
- 한국투자증권 양도세 신고
- js 자동완성
- katalon 사용법
- bfs 미로탐색 java
- recursion example
- katalon xpath
- 홈택스 해외주식 양도세
- CSTS 폭포수 모델
- 주식 양도세 신고방법
- 재귀 예제
- 해외주식 양도세 신고
- 최대공약수 예제
- java.sql.SQLSyntaxErrorException
- git 연동
- 톰캣 실시간 로그
- oracle group by
- 국세청 해외주식 양도세 신고방식
- Katalon Recorder 사용법
- 해외증권 양도세 한국투자증권
- 피보나치함수 예제
- 한국투자증권 해외주식 양도세
- 테스트 자동화
- 피보나치함수
- 재귀함수 예제
- katalon 비교
- Today
- Total
엄지월드
템플릿 콜백 패턴 본문
스프링이 TransactionTemplate이라는 편리한 기능을 제공
스프링은 `TransactionTemplate`라는 템플릿 클래스를 제공한다.
트랜잭션을 없애기 전 코드
트랜잭션을 없앤 코드.
PlatformTransactionManager에 new TransactionTemplate(transactionManager)를 주입한다.
(this.txTemplate은 TransactionTemplate txTemplate 이다)
한번 더 없앨 수 없는 이유는 bizLogic() 메서드를 호출하면 SQLException 체크 예외를 넘겨준다. 해당 람다에서 체크 예외를 밖으로 던질 수 없기 때문에 언체크 예외로 바꾸어 던지도록 예외를 전환했다.
- 체크 예외(Checked Exception) : 컴파일러가 확인할 수 있는 예외로서, 반드시 예외 처리를 해주어야 하는 예외. 대표적으로 파일을 읽거나 쓸 때 발생할 수 있는 `IOException`, 데이터베이스 연결 시 발생할 수 있는 `SQLException`등이 체크 예외의 예시입니다.메서드가 체크 예외를 던질 가능성이 있는 경우, 메서드를 호출하는 곳에서는 try-catch 블록을 사용하거나 예외를 선언하여 해당 예외를 처리해야 합니다.
- 언체크 예외(Unchecked Exception) : 컴파일러가 확인할 수 없는 예외로서, 명시적인 예외 처리가 필요하지 않은 예외입니다. 대부분의 언체크 예외는 프로그램의 오류나 예기치 않은 상황에서 발생합니다. 대부분의 언체크 예외는 프로그램의 오류나 예기치 않은 상황에서 발생합니다. 대표적으로 `NullPointerException`, `ArrayIndexOutOfBoundsException`, `ClassCastException`등이 언체크 예외의 예시입니다. 언체크 예외는 주로 프로그램 코드의 오류를 나타내며, 예외 처리를 강제하지 않습니다. 적절한 예외 처리를 통해 프로그램의 안정성을 높일 수 있습니다.
언체크 예외는 `RuntimeException` 클래스를 상속받는 예외 클래스를 포함하며, 보통 실행 시 발생하는 오류에 대해 발생합니다. 따라서 언체크 예외는 명시적인 예외 처리가 필요하지 않지만, 프로그래머가 적절한 예외 처리를 해주는 것이 좋습니다.
정리
- 트랜잭션 템플릿 덕분에, 트랜잭션을 사용할 때 반복하는 코드를 제거할 수 있었다.
- 하지만 이곳은 서비스 로직인데 비즈니스 로직 뿐만 아니라 트랜잭션을 처리하는 기술 로직이 함께 포함되어 있다.
- 애플리케이션을 구성하는 로직을 핵심 기능과 부가 기능으로 구분하자면 서비스 입장에서 비즈니스 로직은 핵심 기능이고, 트랜잭션은 부가 기능이다.
- 이렇게 비즈니스 로직과 트랜잭션을 처리하는 기술 로직이 한 곳에 있으면 두 관심사를 하나의 클래스에서 처리하게 된다. 결과적으로 코드를 유지보수하기 어려워진다.
- 서비스 로직은 가급적 핵심 비즈니스 로직만 있어야 한다. 하지만 트랜잭션 기술을 사용하려면 어쩔 수 없이 트랜잭션 코드가 나와야 한다.
'java > Spring' 카테고리의 다른 글
jUnit Spring 빈 주입 @TestConfiguration (0) | 2024.04.23 |
---|---|
트랜잭션 프록시 (0) | 2024.04.23 |
스프링 구조 (2) | 2024.04.21 |
Failed to introspect annotated methods on class org.springframework.boot.web.servlet.support.SpringBootServletInitializer (0) | 2024.01.21 |
[intellij] hop swap 수동 적용 (community) (2) | 2023.12.02 |