2-2) 스프링 트랜잭션 관리: ACID, Dirty Read, Repeatable Read, Pantom Read, @EnableTransactionManagement, @Transactional, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
- 데이터베이스 트랜잭션 데이터베이스 트랙잭션이란, 데이터관리 시스템에서 사용되는 업무처리 단위를 말한다. 은행에는 송금이라는 기본적인 기능이 있다. 송금은 내부적으로 출금 계좌에서 돈을 꺼내는 과정과, 입금 계좌에 돈을 넣는 과정으로 나누어 볼 수 있다. 여기서 두개의 과정중 일부만 실패하거나 성공하는 경우는 일어나서는 안된다. 이처럼 트랜잭션은 지켜져야하는 조건이 있는데 이를 ACID라고 부른다. - RDB의 특징: ACID 최근 NoSQL과 같은 새로운 형태의 DB가 인기를 끌고 있긴 하지만, 여전히 대다수의 서비스에서는 관계형 데이터베이스(Relational Database), RDB를 사용한다. RDB는 키와 값들의 간단한 관계를 테이블화 시킨 데이터베이스이다. 그리고 RDB에서 지켜져야하는 다..
1-5) 스프링 AOP(Aspect Oriented Programming) : @Aspect, @Pointcut, @Before, @After, @AfterReturning, @AfterThrowing, @Around
- AOP(Aspect Oriented Programming)란? 과거 프로그램의 규모가 커지면서 중복된 코드를 줄이고 유지보수성을 높이기 위해 OOP, 객체지향 프로그래밍이 등장하였다. 객체지향 프로그래밍은 각각의 역할을 분리하고 서로 필요할 기능을 호출하도록 하여 그 목표를 달성하였다. 웹서비스의 구조를 보면, 사용자 입장에서는 서로 다른 기능으로 보일지라도 여러 서비스와 레포지토리 객체를 공통으로 사용한다. 이렇게 공통 기능을 객체로 분리하여 코드의 재사용성을 높혔지만, 여전히 객체마다 중복해서 들어가야하는 요소들이 존재했다. 예를들어 로그의 경우, 각 객체마다 로그를 남기기 위한 별도의 코드가 삽입되어야 했다. 이렇게 각 객체를 관통하여 존재하는 중복을 제거할 필요성이 생겼다. 그리고 이를 위해 ..