Jsp-MVC2- ProService

2020. 8. 10. 20:23JSP-MVC model2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package svc;
 
import java.sql.Connection;
 
import dao.BoardDAO;
import vo.BoardDTO;
 
//JdbcUtil 클래스의 static 메서드들을 클래스명 없이 이름 만으로 호출하기 위해
//static import 기능을 사용하여 메서드들을 현재 클래스에 포함 시킬 수 있다.
// import static 패키지명.클래스명.메서드명; 형태로 지정
// 1) 해당 클래스 내의 static 메서드들을 직접 지정하는 방법
//import static db.JdbcUtil.getConnection;
//import static db.JdbcUtil.commit;
//import static db.JdbcUtil.rollback;
//import static db.JdbcUtil.close;
 
// 2) 해당 클래스의 모든 메서드들을 한번에 적용시키는 방법
import static db.JdbcUtil.*;
 
public class BoardWriteProService {
    
    //글쓰기 작업 요청을 위한 registArticle() 메서드 정의
    public boolean registArticle(BoardDTO boardDTO) {
//        System.out.println("BoardWriteProService - registArticle()");
        
        // 1. 글쓰기 작업 요청 처리 결과를 저장할 boolean 타입 변수
        boolean isWriteSuccess=false;
        
        // 2. jdbcUtil 객체로부터 Connection Pool 에 저장된 Connection 객체 가져오기(공통)
        Connection con=getConnection();//JdbcUtil.getConnection();
        
        // 3. BoardDAO 클래스로부터 BoardDAO 객체 가져오기(공통)
        BoardDAO boardDAO= BoardDAO.getInstance();
        
        // 4. BoardDAO 객체에 setConnection() 메서드를 호출하여 Connection 객체를 전달(공통)
        boardDAO.setConnection(con);
        
        // 5. BoardDAO 객체의 XXX 메서드를 호출하여 XXX 작업 수행 및 결과 리턴 받기
        // insertArticle() 메서드를 호출하여 글 등록 작업 수행 및 결과 리턴 받아 처리
        // 파라미터 : BoardDTO 객체, 리턴값 : int(insertCount)
        int insertCount= boardDAO.insertArticle(boardDTO);
        
        // 리턴값에 대한 결과 처리
        if(insertCount>0) {// 작업이 성공했을 경우
            //INSERT 작업이 성공했을 경우 트랜잭션 적용을 위해
            //JdbcUtil 클래스의 commit() 메서드를 호출하여 commit 작업 수행
            commit(con);//JdbcUtil.commit(con)
            
            //작업 처리 결과를 성공으로 표시하기 위해 isWriteSuccess 를 true 로 지정
            isWriteSuccess=true;
            
        }else {// 작업이 실패 했을 경우
            //INSERT 작업이 실패했을 경우 트랜잭션 적용 취소를 위해
            // JdbcUtil 클래스의 rollback() 메서드를 호출하여 rollback 작업 수행
            rollback(con);//JdbcUtil.rollback(con);
        }
        
        // 6. JdbcUtil 객체로부터 가져온 Connection 객체를 반환(공통)
        close(con);//JdbcUtil.close(con);
        
        // 7. 작업 처리 결과 리턴
        return isWriteSuccess;
    }
    
}
 
cs

 

따로 Service라는 클래스들을 선언해주어서 ProAction으로 DAO작업 한 값들을 넘겨주는 공간을 만들어 준다.

헷갈릴 수 있지만 ProAction에서는 DAO작업을 하지 않고 Service에서 작업한 값을 넘겨받아서 포워딩 방식으로 포워딩할 곳의 주소를 저장만 해주고 Service에서 DAO작업을 해서 리턴 값을 ProAction으로 넘겨준다.

이렇게 모듈화를 시키는 이유는 유지보수시에 백엔드와 프론트엔드, DB 관리를 나누어 작업의 효율을 높이기 위해서 이다. Service에서는 동일한 작업순서가 유지되는데 Connection을 받고 DAO객체를 생성해서  DAO 작업한 메서드의 리턴 값을 받고 리턴 값으로 작업이 성공했는지 실패했는지 식별을 해주고 Connection을 닫아서 반환을 해주고 식별한 리턴 값을 boolean 타입으로 리턴을 해주는 순서이기 때문에 반복 작업이 대부분이라 그대로 복사해서 다른 Service에 붙여 넣기를 하고 DAO작업과 받아오는 리턴 변수의 값만 변경해주면 된다. 

'JSP-MVC model2' 카테고리의 다른 글

Jsp-MVC2-ListSerivice  (0) 2020.08.10
Jsp-MVC2- ListAction, paging(페이징)  (0) 2020.08.10
Jsp-MVC2-WriteProAction  (0) 2020.08.10
Jsp-MVC2-JdbcUtil  (0) 2020.08.10
Jsp-MVC2 -DAO  (0) 2020.08.10