[Spring Transaction] 스프링과 문제 해결 - 예외 처리
·
Spring/Transaction
스프링과 문제 해결 - 예외 처리이전 챕터에서 체크 예외와 언체크 예외에 대해 다뤘다. 이를 이용하여, 예외 처리를 개선한다.체크 예외와 인터페이스서비스 계층은 POJO로 유지하는 것이 좋다. 하지만, 서비스 계층에서 현재 JDBC 체크 예외인 SQLException에 의존하고 있다.이전 챕터에서 다룬 방법을 적용하여, 리포지토리가 던지는 SQLException 체크 예외를 런타임 예외로 전환해서 서비스 계층에 던지면, 특정 기술에 의존하는 부분을 제거할 수 있다. 인터페이스 도입구현 기술에 강하게 결합되지 않도록 인터페이스를 도입하여 구현 기술을 쉽게 변경할 수 있도록 하자.기존에 처음부터 인터페이스를 만들지 않은 이유는, SQLException 이 체크 예외이기 때문이다.체크 예외를 사용하려면 인터..
[Spring Transaction] 스프링과 문제 해결 - 트랜잭션
·
Spring/Transaction
스프링과 문제 해결 - 트랜잭션이전 챕터에서 트랜잭션이 필요한 이유를 알아봤고, 트랜잭션 내에서 비즈니스 로직을 처리하는 코드를 작성했다.문제점들서비스 계층은 최대한 특정 기술에 의존하지 않고, 순수 자바 코드로 비즈니스 로직을 작성하는게 좋다.구현 기술들이 바뀌더라도, 비즈니스 로직은 최대한 변경 없이 유지되어야 함.계층을 나눔으로써 DB쪽 기술 Data Access Layer, UI쪽 Presentation Layer, 서비스 계층은 순수하게 유지 가능기존 서비스 계층의 MemberService 코드는 여러가지 문제점이 있다.JDBC 구현 기술이 서비스 계층에 누수되는 문제V1(트랜잭션 없는 버전): SQLException이라는 JDBC 기술에 의존한다는 점V2(트랜잭션 있는 버전): JDBC 기술에..
[Spring Transaction] 트랜잭션 이해와 적용
·
Spring/Transaction
트랜잭션 이해와 적용트랜잭션 - 개념 이해파일이 아닌 데이터베이스에 데이터를 저장하는 이유 트랜잭션하나의 거래를 안전하게 처리하도록 보장커밋(Commit): 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것롤백(Rollback): 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것트랜잭션 ACID트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)을 보장해야 함원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하거나 모두 실패해야 한다.일관성: 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다.격리성: 동시에 실행..