JTA(Java Transaction API) 글로벌 트랜잭션을 지원하는 트랜잭션 매너지를 지원하기 위한 API 애플리케이션에서는 기존의 방법대로 DB는 JDBC, 메시징 서버는 JMS 같은 API를 사용해서 필요한 작업을 수행한다. 단, 트랜잭션은 JDBC나 JMS API를 사용해서 직접 제어하지 않고 JTA를 통해 트랜잭션 매니저가 관리하도록 위임한다. 트랜잭션 매니저는 DB와 메시징 서버를 제어하고 관리하는 각각의 리소스 매니저와 XA 프로토콜을 통해 연결된다.
토비의 스프링 3.1 - 4장 예외 실습 중 한 구문(p314)이 자꾸 빨간줄이 떴다.assertThat(set.translate(null, null, sqlEx), is(DuplicateKeyException.class));내용은 "Wrong 1st argument type." T type의 아규먼트가 들어와야 하는데 DataAccessException type의 아규먼트가 들어왔다는 것이다.다른 junit 라이브러리를 import 하기도 했지만 달라진 건 없었다. 검색해보니 junit 버전에 따라 assertThat이 요구하는 아규먼트가 다른 것 같은데(본인은 junit 4.12 사용중) 위와 같을 땐 is 대신 instanceOf를 사용하면 된다고 한다. assertThat(set.translate..
Java 코드를 작성하다 보면 예전에 import 했으나 지금은 사용하지 않는 import 구문이 많이 남는다. 이때 IntelliJ의 다음 기능을 사용하면 Unused import statement를 자동으로 지워준다.Preferences > Editor > Auto Import > Optimize Imports on the Fly출처: https://intellij-support.jetbrains.com/hc/en-us/community/posts/206915775-How-to-enable-remove-unused-imports-
DataAccessException과 예외 추상화댜앙한 데이터 엑세스 기술: JDBC, JDO, JPA, TopLink, ORM, iBatis 등DAO를 따로 만드는 이유는 데이터 엑세스 로직을 담은 코드를 성격이 다른 코드에서 분리해놓기 위해서다. 또한 전략 패턴을 적용해 구현 방법을 변경해서 사용할 수 있게 만들기 위해서이기도 하다. 그러나 클라이언트 입장에서는 DAO가 사용한 데이터 엑세스 기술에 따라 예외 처리 방법이 달라져야 한다.이 문제를 해결하기 위해 스프링은 DataAccessException 계층구조를 만들었다. DataAccessException은 자바의 주요 데이터 엑세스 기술에서 발생할 수 있는 대부분의 예외를 추상화하고 있다.
예외를 처리하는 일반적인 방법 예외 복구예외상황을 파악하고 문제를 해결해서 정상 상태로 돌려놓는 방법 예외처리 회피예외처리를 자신이 담당하지 않고 자신을 호출한 쪽으로 던져버리는 방법 예외 전환발생할 예외를 적절한 예외로 전환하여 던지는 방법목적1. 예외상황에 대에 의미를 분명하게 해줄 수 있는 예외로 바꿔주기 위해ex) SQLException -> DuplicateUserIdException이런 경우 중첩 예외로 만드는 것이 좋다목적2. 포장(wrap)하여 예외 처리를 쉽고 단순하게 만들기 위해중첩 예외를 이용해 새로운 예외를 만들고 원인이 되는 예외를 내부에 담아서 던지는 방식은 동일주로 예외처리를 강제하는 체크 예외를 언체크 에외인 런타임 예외로 바꾸는 경우 사용ex) SQLException -> ..
예외의 종류와 특징자바에서 throw를 통해 발생시킬 수 있는 예외는 크게 세 가지가 있다. Errorjava.lang.Error의 서브클래스들시스템 관련 에러주로 자바 VM에서 발생시키기 때문에 코드에서 잡을 수 없음 ex) OutOfMemoryError, ThreadDeath Exception과 체크 예외java.lang.Exception의 클래스와 서브클래스들크게 체크 예외와 언체크 예외로 구분됨체크 예외: RuntimeException 클래스를 상속하지 않은 Exception 서브 클래스체크 예외는 반드시 예외 처리 코드를 작성해야 함. 작성하지 않으면 컴파일 에러 발생(IOException, SQLException 등) RuntimeException과 언체크/런타임 예외언체크 예외: Runtim..
- Total
- Today
- Yesterday