<오늘>
트랜젝션 단점 해결할 수 있는 리스너
insertBoard, insertAttaches
-각각 커밋하면 완전히 다른 트랜젝션으로 돌아감
만약 보드 인서트 됬는데 첨부파일 등록하다가 오류나면? - 이건 게시글 등록 실패한것
트랜잭션 - 절대로 쪼갤 수 없는 단위
게시글 등록, 첨부파일 등록되야 끝나는 것. 쪼갤 수 없음 - 원자성
session이 open되면 트랜잭션이 시작, close되면 트랜잭션 종료
마이바티스
파라미터 타입은 반드시 하나밖에 못줌
-> mapper proxy 사용 못함.
트랜잭션 관리하려면 인터페이스와 mapper의 시그니처 달라지니까 아이바티스 처럼 쓰면 됨.
트랜잭션 controller에서는 관리안함.
prodInsert에서
saveFile때문에 b.l에서 못했음.
웹리소스라서.
model layer는 웹과는 전혀 상관없는 애들
-> 리스너로 해결
saveFolderUrl = "" ~이 코드 상품 다 똑같음
매번 돌릴 필요x
서버 시작 됬을때.
지금은 서블릿 사용 안해서 init 콜백 설정 못해서 여기다 못함.
그럼 서버 시작됬다는 이벤트 어떻게 처리할거냐? - 리스너
컨텍스트가 시작이됬다
얘 상속받아서 추가적인거 구현
어떤 컴포넌트에서 이벤트가 발생했을떄 이벤트 처리
-언어가 달라지든 다 똑같음
1. 이벤트 타겟 결정
2. 타켓을 대상으로 처리하고 싶은 이벤트 결정
3. 이벤트를 처리할 수 있는 핸들러 구현
4. 타켓에 이벤트 핸들러 부착(onclick). 이런 핸들러가 이벤트 처리할 수 있다는거 알려주는것
버튼 클릭했을때 alert창
각자 생명주기있고 스코프 있는 애들
lifeCycle - 언젠간 시작되고 종료된다.
이렇게 구현할 수도 있는데 지금 우리 어플리케이션에서 돌아가고 있는 리스너 있어서 extends해서
걔가 하는 역할에 우리꺼 하기위해
->super불러야 타일즈리스너가 하던일 그대로 함.
원래 있던거 없애고 우리가 만든거
이벤트 발생하면 이벤트 객체 받음 - 그 안에는 타겟에 대한 정보 들어있으니까
어느 레이어를 기준으로 트랜잭션 관리할지 기준 서있어야.
로직 내가 끌고갈 수 있어야.
마이바티스 - persitence framework
b.l이 마이바티스 의존하는 상황 생김
2. 중복코드 발생
-> 스프링 쓰면 b.l에서 빠져나감(하지만 어떻게 처리했는지 기억하고 있어야됨. 실무 나가서 스프링 안쓸수도 있으니까)
AOP(관점지향방법론)
이 2가지 문제점 해결됨
!기억!
트랜잭션 관리하는 방법.구조
이때 발생하는 문제점 2가지
세션에 하면 30분뒤 사라짐, 서버 무거워짐
응답데이터 안에 몇번추천했다는 정보 쿠키에 저장해서 내보낸다.