Spring/Spring DI와 AOP

Spring/Spring DI와 AOP

[Spring DI와 AOP]@Transactional

1.TransactionManager 하나의 메서드는 하나의 Connection을 가진다. 하지만 하나의 메서드에 하나의 Connection을 가지면 중복된 메서드의 Connection은 개별 커넥션을 갖기 때문에 Tx가 안된다는 문제가 발생한다. 예를들어 UserDao의 deleteUser(100);를 실행하면 메서드에 해당하는 Connection이 commit되면서 100이라는 키를 가진 유저의 정보가 삭제될거다. 그런데 여기에 deleteUser(200);을 실행한 후 rollback을 해야하는 상황이 발생하면, 이미 deleteUser(100);이 실행된 Connection은 commit 되었기에 rollback이 되지 않는다. 이 문제를 해결하기 위해선 두 메서드의 Connection을 하나의 ..

Spring/Spring DI와 AOP

[Spring DI와 AOP] Transaction, Commit, Rollback

1.Transaction? Transaction은 더이상 나눌 수 없는 작업의 단위다. Transaction대신 별칭 Tx로 자주 표현되며, Transaction의 종류로는 대표적으로 SQL에서 insert, update, select를 수행하는 작업이 있다. 만약 계좌이체를 한다고 하면 출금(update)과 입금(update)이 하나의 Tx로 묶여야한다. 하나의 Tx로 묶여한다는 의미는 하나의 작업단위가 되어야 한다는 말이다. 내 계좌에서 은행계좌로 1000만원을 입금한다고 가정해보자. 그러면 내 계좌에서는 1000만원이 빠져나가야하고 은행계좌에는 1000만원이 입금되어야한다. Transaction이 제대로 이뤄지면 결과적으로 내 계좌(-1000만원) 은행계좌(+1000만원)인 작업이 실행 될 거다. ..

Spring/Spring DI와 AOP

[Spring DI와 AOP] DAO

DAO? DAO(Data Access Object)는 데이터(Data)에 접근(Access)하기 위한 객체(Object)다. DAO는 DB에 저장된 데이터를 쓰고(Create), 읽고(Read), 변경하고(Update), 삭제(Delete)를 한다. DB테이블당 하나의 DAO를 작성한다. 그렇다면 DAO를 왜 작성할까? DAO를 작성하는 가장 큰 이유는 코드의 중복을 피하기 위함이다. 위의 그림을 보면 DAO를 생성하기 전에는 selectUser()가 중복되는 걸 알 수 있다. 이후 DAO를 생성하면 중복되는 코드와 DAO가 수행하는 역할(쓰기, 읽기, 변경하기, 삭제하기)을 따로 떼어낼 수 있다.DAO를 생성함으로써 코드를 간결하게 할 수 있다. 코드의 중복을 피하는 것이외에도 관심사((Presenta..

Spring/Spring DI와 AOP

[Spring AOP] AOP의 개념과 사용

1.AOP(Aspect Oriented Programming)란? AOP의 약자를 풀어쓰면 관점 지향 프로그래밍이다. 관점 지향 프로그래밍? 어려운 말이다. 간단히 말하면 관점을 나눠서 프로그램을 짜는 방식이라고 말할 수 있다. AOP는 다른 말로 부가기능(advice)을 동적으로 추가해주는 기술이다. 이 말도 어렵다 부가기능은 무엇이고 동적이란 말은 무엇인가? 부가기능은 핵심기능의 반댓말이다. 그리고 동적이란 말은 실행중이라는 뜻이다. 즉 핵심기능이 아닌 기능을 실행중에 추가하는 기술이다. 하지만 그래도 어렵다. 마지막으로 한 줄로 AOP를 요약하면 메서드의 시작 또는 끝에 자동으로 코드(advice)를 추가하는 기술이다. 코드를 통해 AOP의 개념을 조금 더 살펴보자. 2.공통 코드의 분리 MyCla..

Spring/Spring DI와 AOP

[Spring DI] BeanFactory / ApplicationContext 와 IoC / DI

1.Bean과 Spring container Bean은 Spring Container가 관리하는 객체이다. Spring container는 Bean의 저장소이며 Bean을 저장, 관리(생성,소멸,연결) 한다. BeanFactory : Bean의 기본기능(생성, 연결...)을 정의 ApplicationContext : BeanFactory를 확장하여 기능을 추가 정의. Spring Container와 유사함. 2.ApplicationContext XML Java Config non-Web GenericXmlApplicationContext AnnotationConfigApplicationContext Web XmlWebApplicationContext AnnotationCofigWebApplicationC..

각시탈코더
'Spring/Spring DI와 AOP' 카테고리의 글 목록