설계: 그룹화+관계(시스템 구조화)
그룹화, 구조화 -> 분리
MVC -> 패턴
oop설계의 5대 원칙 SOLID
S: 단일책임 원칙: 1책임 1메서드
O:OCP 오픈(상속O) 앤 클로즈 (변경X) - 상속은 가능 템플렛 변경X
LID
분리
메서드의 매개변수 - 작업에 필요한 것이 뭔지 지정(입력)
1tcp/ip 연결-in, out
2http요청
3서버가요청처리
4서버 http응답
http 요청- 문자열
-> request 객체로 변함(HttpServletRequest request)
서블릿:자바(5%)안에 html(95%)
jsp: html안에 자바
jsp -> servlet 자동변환
객체를 미리 만들어서 map에 저장
필요할 때마다 꺼내서 씀(객체주소를)
map에서 꺼내는 방법
Spring container: map
싱글톤: 객체 1개, 저장되어있는거 재사용
flyweight: 여러개
prototype: 기존걸 복제해서 새로운걸 줌(주소가 다름)
중복 코드 따로 뻄
트랜잭션: 더이상 나눌 수 없는 작업의 단위
트랜잭션 속성: ACID
원자성:나눌 수 없는 하나의 작업으로 다뤄져야 함
일관성: Tx 수행 전과 후가 일관된 상태를 유지
고립성: 각 Tx는 독립적으로 수행되어야 한다
영속성: 성공한 Tx의 결과는 유지되어야 한다
Tx의 isolation level
READ UNCOMMITED: 커밋되지 않은 데이터도 읽기 가능
RAED COMMITED: 커밋된 데이터만 읽기
REPEATABLE READ: Tx이 시작된 이후 변경은 무시됨
SERIALIZABLE: 한번에 하나의 Tx만 독립적으로 수행
중복제거 하려고 쪼갬 = 정규화
실행할 때 합쳐짐 = 조인
sql에서는 데이터 중복 제거
AOP에서는 코드 중복 제거
AOP: 동적 자동 코드 추가(시작과 끝)
target: advicd가 추가될 객체
advice: target에 동적으로 추가될 부가 기능(코드)
join point: advice가 추가(join)될 대상(메서드)
pointcut: join point들을 정의한패턴. 예)execution( com.fastcampus..*(..))
proxy: target에 advice가 동적으로 추가되어 생성된 객체
weaving: target에 advice를 추가해서proxy를생성하는것 꼬맨다
서비스 계층의 분리와 @Transational
DAO의 각 메서드는 개별 Connetion을 사용
TransactionManager : 같은 Tx내에서 같은 Connetion을 사용할 수 있게 관리