열심히 끝까지
디바이스 융합 자바(Java) day95 - Spring Boot[트랜잭션] 본문
디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(수업내용)
디바이스 융합 자바(Java) day95 - Spring Boot[트랜잭션]
노유림 2022. 10. 28. 15:53스프링 웹 MVC
프론트 컨트롤러(디스페쳐 서블릿)
>> 쓰다보면 디스페쳐 서블릿에 대한 호출을 진행 중인 것을 확인 가능
> 프론트 컨트롤러 자동 지원
> MODEL -> VIEW
> 서비스단에 대해 띄어볼 것
- 서비스단
: 하나의 서비스는 여러개의 DAO를 가질 수 있고
이렇게 여러 개의 DAO는 한 요청에 전부 수행되어야할 때가 있음
> N개의 수행되는 요청이 한꺼번에 처리되어야 함
>> 트랜젝션이랑도 엮어서 사용 가능
Service로 변환 작업
BoardService.java---------------
package com.ryo.springboot;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
public class BoardService implements IBoardDAO{
@Autowired
IBoardDAO boardDAO;
@Autowired
IMemberDAO memberDAO;
@Autowired
PlatformTransactionManager txManager;
@Autowired
TransactionDefinition txdefinition;
@Override
public List<BoardDTO> selectAll(BoardDTO dto) {
// TODO Auto-generated method stub
return boardDAO.selectAll(dto);
}
@Override
public BoardDTO selectOne(BoardDTO dto) {
// TODO Auto-generated method stub
return boardDAO.selectOne(dto);
}
@Override
public int insert(BoardDTO dto) { // service 객체의 하나의 메서드()를 1 트랜잭션(단위)로 생각함
TransactionStatus txStatus = txManager.getTransaction(txdefinition);
try {
boardDAO.insert(dto); // dao1.메서드();
if(dto.getWriter().equals("timo")) {
throw new Exception(); // 일부러 에러를 발생시킴
}
}catch(Exception e) {
txManager.rollback(txStatus);
return 0;
}
txManager.commit(txStatus);
return 1; // 현재의 코드: 에러발생시 dao1.메서드()만 적용이 되어버림
}
@Override
public int delete(BoardDTO dto) {
// TODO Auto-generated method stub
return boardDAO.delete(dto);
}
}
IBoardService.interface--------
package com.ryo.springboot;
import java.util.List;
public interface IBoardDAO {
List<BoardDTO> selectAll(BoardDTO dto);
BoardDTO selectOne(BoardDTO dto);
int insert(BoardDTO dto);
int delete(BoardDTO dto);
}
TestController.java--------------
package com.ryo.springboot;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
@Autowired
private MemberDAO memberDAO;
/*
@Autowired
private BoardDAO boardDAO;
*/
@Autowired
private IBoardService boardService;
@RequestMapping("/")
public @ResponseBody String root() {
return "Jdbc Template 실습 실습";
}
@RequestMapping(value="/memberList", method=RequestMethod.GET) // get post 방식하게 되면
public String memberList(Model model) {
model.addAttribute("datas",memberDAO.selectAll());
return "memberList";
}
@RequestMapping("/boardList")
public String boardList(Model model) {
model.addAttribute("datas", boardService.selectAll(null));
return "boardList";
}
@RequestMapping("/board")
public String board(BoardDTO dto, Model model) {
model.addAttribute("data", boardService.selectOne(dto));
return "board";
}
@RequestMapping(value="/boardInsert", method=RequestMethod.GET)
public String boardInsertin(BoardDTO dto) {
return "boardInsert";
}
@RequestMapping(value = "/boardInsert", method = RequestMethod.POST)
public String boardInsert(BoardDTO dto) {
boardService.insert(dto);
return "redirect:boardList";
}
@RequestMapping("/boardDelete")
public String boardDelete(BoardDTO dto) {
boardService.delete(dto);
return "redirect:boardList";
}
}
'디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(수업내용)' 카테고리의 다른 글
디바이스 융합 자바(Java) day97 - JPA(Java Persistence API) (0) | 2022.11.01 |
---|---|
디바이스 융합 자바(Java) day94 - Spring Boot[JDBCTemplate] (0) | 2022.10.27 |
디바이스 융합 자바(Java) day93 - Spring Boot : Validator(유효성 검사) (0) | 2022.10.26 |
디바이스 융합 자바(Java) day92 - Spring Boot 설정[MVC 패턴] (0) | 2022.10.25 |
디바이스 융합 자바(Java) day91(2) - SpringBoot 의존 주입 (0) | 2022.10.24 |