본문 바로가기

분류 전체보기21

[6장] AOP AOP는 IOC/DI, 서비스 추상화와 더불어 스프링의 3대 기반기술의 하나다. 서비스 추상화를 통해 많은 근본적인 문제를 해결했던 트랜잭션 경계설정 기능을 AOP를 이용해 더욱 세련되고 깔끔한 방식으로 바꿔보자. 그리고 그 과정에서 스프링이 AOP를 도입해야 헸던 이유도 알아보자. 트랜잭션 코드의 분리 -메소드 분리 트랜잭션 경계설정의 코드와 비즈니스 로직 코드 간에 서로 주고받는 정보가 없고, 비즈니스 로직 코드를 사이에 두고 트랜잭션 시작과 종료를 담당하는 코드가 앞뒤에 위치하고 있어 메소드로 분리하였다. public void upgradeLevels() throws Exception { TransactionStatus status = this.transactionManager.getTransact.. 2022. 1. 3.
[기록] 211229 1. 트랜잭션 더 이상 나눌 수 없는 일련의 단위 작업을 뜻한다. 대표적인 예로 계좌이체를 많이 말한다. 계좌이체를 예를 보면 다음과 같은 순서로 작업이 일어난다. 계좌이체하고자 하는 금액 입력 계좌에 뽑고자하는 금액보다 많은 금액이 들어있는지 확인 들어있다면 출금 송금한 계좌에 입금된 만큼 + 2. ACID ACID는 트랜젝션의 특징들의 앞글자를 딴 단어이다. Atomicity(원자성) 트랜잭션을 구성하는 1~4번이 모두 수행되거나 모두 수행되지 않아야 하는 특성을 말한다. 이는 DB에 대해서 알아야 하는데 DB에서 자동으로 이전에 commit 된 상태를 임시 영역인 rollback segment 에 저장을 해놓고 장애가 발생할 떄 rollback segment 에 저장해놓았던 상태로 rollback을.. 2022. 1. 2.
[5장] 서비스 추상화 5장에서는 DAO에 트랜잭션을 적용해보면서 스프링이 어떻게 성격이 비슷한 여러 종류의 기술을 추상화하고 이를 일관된 방법으로 사용할 수 있도록 지원하는지 살펴보자. 1. 사용자 레벨 관리 기능 추가 지금까지의 UserDao는 가장 기초적인 CRUD 작업만 가능하다. 사용자 정보를 DB에 넣고 빼는 것을 제외하면 어떤 비즈니스 로직도 갖고 있지 않다. 서비스 추상화에 관한 내용을 보기 전에 사용자 레벨 관리 기능을 추가하자. 여기에 다음과 같은 비즈니스 로직을 구현해보자. 사용자의 레벨은 BASIC, SILVER, GOLD 세 가지 중 하나다. 사용자가 처음 가입하면 BASIC 레벨이 되며, 이후 활동에 따라서 한 단계씩 업그레이드될 수 있다. 가입 후 50회 이상 로그인을 하면 BASIC에서 SILVER.. 2021. 12. 29.
[5장] 서비스 추상화 5장에서는 지금까지 만든 DAO에 트랜잭션을 적용해보면서 스프링이 어떻게 성격이 비슷한 여러 종류의 기술을 추상화하고 이를 일관된 방법으로 사용할 수 있도록 지원하는지를 살펴보자. 추상화란 하위 시스템의 공통점을 뽑아내서 분리시키는 것을 말한다. 그렇게 하면 하위 시스템이 어떤 것인지 알지 못해도, 또는 하위 시스템이 바뀌더라도 일관된 방법으로 접근할 수가 있다. 사용자 레벨 관리 기능 추가 UserDao는 User 오브젝트에 담겨 있는 사용자 정보를 등록, 조회, 수정, 삭제하는 일명 CRUD 기능만 가능하다. 여기에 간단한 비즈니스 로직을 적용하여 보자. 사용자의 로그인 횟수등에 따라 레벨(BASIC, SILVER, GOLD)을 부여하여 관리할 수 있도록 한다. JAVA5 이상에서 사용 가능한 enu.. 2021. 12. 26.