- JDBC
java apllication 과 my sql과 같은 데이터베이스에 연결하여 작업이 가능하다.
표준으로 제공해주는 인터페이스
영속성레이어를 위한 최초의 컴포넌트
- UUID
주로 분산 컴퓨팅 환경에서 사용되는 식별자이다. 중앙관리시스템이 있는 환경이라면 각 세션에 일련번호를 부여해줌으로써 유일성을 보장할 수 있겠지만 중앙에서 관리되지 않는 분산 환경이라면 개별 시스템이 id를 발급하더라도 유일성이 보장되어야만 할 것이다. 이를 위해 탄생한 것이 범용고유식별자 UUID (Universally Unique IDentifier) 이다.
UUID는 128비트의 숫자이며, 32자리의 16진수로 표현된다. 여기에 8-4-4-4-12 글자마다 하이픈을 집어넣어 5개의 그룹으로 구분한다.
- AOP
(aspect-oriented programming, AOP)은 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적
컴파일 시점, 클래스 로드 시점, 런타임 시점 세가지가 존재한다.
타겟
- 핵심 기능을 담고 있는 모듈로서 부가기능을 부여할 대상
조인 포인트
- 어드바이스가 적용될 수 있는 위치
- 타겟 객체가 구현한 인터페이스의 모든 메서드
포인트 컷
- 어드바이스를 적용할 타겟의 메서드를 선별하는 정규표현식
- 포인트컷 표현식은 execution으로 시작하고 메서드의 Signature를 비교하는 방법을 주로 이용함
애스펙트
- 애스펙트 = 어드바이스 + 포인트 컷
- Spring에서는 Aspect를 빈으로 등록해서 사용한다.
어드바이스
- 어드바이스는 타겟의 특정 조인트포인트에 제공할 부가기능
- Advice에는 다음 그림과 같이 @Before, @After, @Around, @AfterReturning, @AfterThrowing 등이 있다.
- Transaction


READ_UNCOMMITTED → 트랜잭션 처리중에 커밋되지 않은 데이터를 다른 트랜잭션의 접근을 허용하는것
READ_COMMITTED → 커밋이 확정된 데이터만 읽을 수 있음
REPEATABLE_READ → 다른 트랜잭션이 접근해서 바꾸는 것을 막음 delete, update 방지
SEIALIZABLE → 완벽한 분리 insert까지 방지
dirty reads
→ 아직 커밋되지 않은 데이터를 다른 트랜잭션에서 읽는것
non-repeatable reads
→ 한 트랜잭션 내에서 같은 쿼리를 두 번 수행할때 앞과 다른값이 나오는 상황
phantom reads
→ 첫 번째 쿼리에 없던 데이터가 두 번째 상황에 나온다. ex) 처음에 읽은 데이터가 4개였는데 트랜잭션 끝나기 전에 읽었더니 5개가 읽힘
Mysql은 기본적으로 REPEATABLE_READ
- DataSource
- DBCP