[오늘의 계획]
1. 수업내용 복습
2. 부트스트랩 버튼 (마이페이지)
[오늘의 공부]
서비스클래스에서 여러 dao를 불러와다가 하나의 메소드를 구성하는데, 불러온 dao의 메소드중 하나라도 오류가 발생을 한다면 최종 결과에 영향을 주므로 데이터 무결성을 위반하게 된다.
->transaction manager이 필요하다.
해결법 ) 예외가 발생되기 전에 실행된 모든 sql 명령을 취소되도록 설정한다. RollBack 처리 한다.
ㅡSpring Framework 에서 제공하는TransactionManager 관련 클래스를 이용하여 처리 가능 - AOP
[Spring Framework의 TransactionManager를 이용하여 트랜잭션 처리하는 방법]
1. spring-tx 라이브러리를 프로젝트에 빌드처리 - [pom.xml] >> spring-jdbc 라이브러리에 의해 자동빌드 됨.
2. Bean Configuration File 에서 TransactionManager 관련 클래스를 Spring bean을 등록 - [root-context.xml]
3. Bean Configuration File 에서 AspectJ 프로그램을 이용하여 트랜잭션 처리되도록 등록 (AOP) - [servlet-context.xml]
[servlet-context.xml 설정하기]
Spring-tx 네임스페이스(spring-tx.xsd)를 추가해야한다.
ㅡ <tx:advice> : TransactionManager 관련 Spring Bean을 Advisor로 설정하기 위한 엘리먼트
<!-- advice : TransactionManager 관련 Spring Bean를 Advisor로 설정하기 위한 엘리먼트 -->
<!-- Advisor : JoinPoint가 설정된 횡단관심모듈이 등록된 Advice 클래스의 Spring Bean -->
<!-- id 속성 : advice 엘리먼트를 구분하기 위한 식별자를 속성값으로 설정 -->
<!-- transaction-manager 속성 : TransactionManager 관련 Spring Bean의 beanName를 속성값으로 설정 -->
<!-- attributes : 트렌젝션 관리자에 의해 처리될 메소드를 설정하는 엘리먼트 -->
<!-- method : 트렌젝션 관리자에 의해 처리될 메소드 이름을 설정하는 엘리먼트 -->
<!-- name 속성 : 트렌젝션 관리자에 의해 처리될 메소드 이름을 속성값으로 설정 -->
<!-- rollback-for 속성 : ROLLBACK 명령이 실행되기 위한 예외를 속성값으로 설정 -->
<!-- read-only 속성 : false(기본) 또는 true(읽기 전용) 중 하나를 속성값으로 설정 -->
<aop:config>
: aspectJ 프로그램을 이용하여 aop 설정 엘리먼트
ㅡ advisor : tx 네임스페이스의 advice 엘리먼트로 등록된 advisor 을 사용하기 위한 엘리먼트
ㅡ advice-ref 속성 : tx 테임스페이스의 advice 엘리먼트의 식별자를 속성값으로 설정
[TransactionManager 관련 어노테이션 설정하기]
1. 해당 메소드에 @Transactional 붙인다.
2. bean configuration file 에서 transactionManager 관련 어노테이션이 동작되도록 설정 - [root-context.xml]
[root-context.xml]
<tx : annotaion-driven>
: @Transactional 어노테이션을 사용하여 TransactionManager 관련 Spring Bean으로 트랜잭션 처리기능을 제공하기 위한 엘리먼트
[REST 서비스를 제공해주는 프로그램]
json 으로 반환값을 준다.
REST : 클라이언트 요청에 대해 요청 처리 메소드에서 요청 처리 후 처리결과를 뷰페이지(JSP)가 아닌 직접 리소스(TEXT,XML,JSON 등)으로 응답하는 기능
ㅡ 다양한 기기에서 웹프로그램의 요청에 대한 공통적으로 처리 가능한 텍스트 데이터로 응답하는 것을 목적으로 만든 프로그램
ㅡ 사이트 구현시 AJAX 기능으로 REST 웹프로그램을 요청하고 처리결과를 JSON으로 응답받아 DHTML로 페이지를 변경할 수 있도록 만든다 >> 동적페이지 구현 가능
[restfulController]
@ResponseBody : 요청처리 메소드의 반환값(문자열)을 클라이언트에게 직접 텍스트로 응답되도록 설정하는 어노테이션 -> 문자열(String)으로만 응답 가능 - Java 객체는 응답 불가능
@RequestBody : POST,PUT,PATCH,DELETE 등의 요청에 의해 전달된 모든 값을 하나의 문자열로 전달받아 저장하기 위한 어노테이션
-> GET방식으로 요청하여 전달된 값은 매개변수에 저장될 수 없다.
-> 전달값은 자바스크립트의 Object 객체 형태로 전달된다 ( 이름=값&이름=값&...) >> {"이름":값,"이름:값....}
제일 좋은방법은... dto클래스가 있는것이 제일 좋습니다~!
전달값을 Map으로 받으면 간편하다!!
내일 할 것 : ajax, json으로 응답받아 페이징처리,ExceptionHandler
'일기장 > 하루 정리' 카테고리의 다른 글
220323 [수] ExceptionHandler , 암호화처리 (0) | 2022.03.23 |
---|---|
220322 [화] Pager 클래스 , AJAX로 게시판 형태 만들기 (0) | 2022.03.22 |
220319 [토] 폴더,파일 정리 / 부트스트랩 마무리를 향해.. (2) | 2022.03.19 |
220318 [금] Mybatis 환경설정 2 , JUnit (0) | 2022.03.18 |
220317 [목] Tiles (Template Page), Mybatis 환경설정 (2) | 2022.03.17 |