Database

(22.11.29)Database : DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด MVC๋ฐฉ์‹์„ ํ†ตํ•˜์—ฌ ์›น๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ ๋‚˜ํƒ€๋‚ด๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค์›” 2022. 11. 29.

โ—โ—์›น์—์„œ MVC ๋ฐฉ์‹์— ๋งž์ถฐ Database์—์„œ ์ •๋ณด๋ฅผ ๋ฝ‘์•„ ์›น์—์„œ ๋‚˜ํƒ€๋‚ด๊ธฐโ—โ—

 

 

โŠ™Model : ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ ์ž‘์—…๋“ค -

-DB ์ž…์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•˜๋Š” ํด๋ž˜์Šค(DAO,  Data Access Object)

-๋ฐ์ดํ„ฐ ๊ทธ ์ž์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” VO ํด๋ž˜์Šค(DTO, Data Transfor Object)

 

โŠ™View : ์‹ค์ œ ๋ธŒ๋ผ์šฐ์ €์— ๋‚˜ํƒ€๋‚˜๋Š” ์š”์†Œ๋“ค - html๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ jsp ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

 

โŠ™Controller : ๋ชจ๋ธ๊ณผ ๋ทฐ ๊ฐ„์˜ ํ๋ฆ„์„ ์ œ์–ด ํ•˜๋Š” ์š”์†Œ

 

 

 

โ—โ—์œ„ ๊ฐ™์€ ๊ธฐ์กด ๋ฐฉ์‹์—์„œ ์„œ๋ธ”๋ฆฟ์˜ ๊ธฐ๋Šฅ์€ ์ตœ์†Œํ™” ์‹œํ‚ค๊ณ  DB ์ž…์ถœ๋ ฅ ํ•˜๋Š” ๋ฉ”์†Œ๋“œ ๋“ค์€ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐโ—โ—

 

 

EmpVO.java

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
public class EmpVO {
    private int empno;
    private String ename;
    private int deptno;
    private float sal;
    private java.sql.Date hiredate;
    
    public EmpVO() {}
    
    public EmpVO(int empno) {
        this.empno= empno;
    }
    public int getEmpno() {
        return empno;
    }
    public void setEmpno(int empno) {
        this.empno = empno;
    }
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public int getDeptno() {
        return deptno;
    }
    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }
    public float getSal() {
        return sal;
    }
    public void setSal(float sal) {
        this.sal = sal;
    }
    public java.sql.Date getHiredate() {
        return hiredate;
    }
    public void setHiredate(java.sql.Date hiredate) {
        this.hiredate = hiredate;
    }
}
 
cs

 

 

EmpDAO.java

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
import java.sql.*;
import java.util.*;
 
public class EmpDAO 
{    //DB ์ž…์ถœ๋ ฅ(Data Access Object)
    
    private Connection conn;
    private Statement stmt;
    private ResultSet rs;
    //์ ‘์†
    private Connection getConn() 
    {
        try {
            Class.forName("oracle.jdbc.OracleDriver");
            conn = DriverManager.getConnection(
            "jdbc:oracle:thin:@localhost:1521:xe""SCOTT""TIGER");
            this.conn=conn;
            return conn;
        } catch (Exception e) {
            e.printStackTrace();;
        }return null;
    }
    public List<EmpVO> getList()
    {
        getConn();
        try {
            this.stmt = conn.createStatement(); //SQL ๋ฌธ์žฅ์„ ๋‹ค๋ฃจ๋Š” ๊ฐ์ฒด
            this.rs = stmt.executeQuery("SELECT * FROM emp");
            
            List<EmpVO> list = new ArrayList<>();
            while(rs.next())
            {
               int empno = rs.getInt("EMPNO");
               String ename = rs.getString("ENAME");
               java.sql.Date hiredate = rs.getDate("HIREDATE");
               float salary = rs.getFloat("SAL");
               EmpVO emp = new EmpVO();
               emp.setEmpno(empno);
               emp.setEname(ename);
               emp.setHiredate(hiredate);
               emp.setSal(salary);
               list.add(emp);
               
               System.out.printf("%d\t%s\t%s\t%f \n", empno,ename,hiredate,salary);
            }
            return list;
        }catch(Exception ex) {
            ex.printStackTrace();
        }finally {//์—๋Ÿฌ๊ฐ€ ๋‚˜๋“  ์•ˆ๋‚˜๋“  ๋Œ์•„๊ฐ€๋Š” ๋ฉ”์†Œ๋“œ
            closeAll();
        }
        return null;
    }
    private void closeAll(){
        
        try {
            if(rs!=null) rs.close();
            if(stmt!=null) stmt.close();
            if(conn!=null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
cs

 

 

Servlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.io.IOException;
import java.util.*;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@WebServlet("/oracle")
public class OracleJDBCTest extends HttpServlet 
{
   
   protected void service(HttpServletRequest request, HttpServletResponse response) 
           throws ServletException, IOException 
   {
      System.out.println("Oracle 11gR2 XE, ojdbc8.jar ํ…Œ์ŠคํŠธ");
      EmpDAO dao = new EmpDAO();
      List<EmpVO> list = dao.getList();
      System.out.println("๊ฐ€์ ธ์˜จ ํ–‰"+ list.size());
   }
}
cs

 

 

์‹คํ–‰ ๊ฒฐ๊ณผ:


โ—โ—์™„๋ฒฝํ•œ MVC๋ฐฉ์‹์œผ๋กœ DB์—์„œ ์ •๋ณด๋ฅผ ๊บผ๋‚ด์™€ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋‚˜ํƒ€๋‚ด๋Š” ์›นํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ด๋ณด๊ธฐโ—โ—

 

์œ„์— ์ฝ”๋“œ๋ฅผ ์™„๋ฒฝํ•œ MVC๋ฐฉ์‹์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•ด์„  Service ํด๋ž˜์Šค ๋˜ํ•œ ํ•„์š”ํ•˜๋‹ค. ์„œ๋ธ”๋ฆฟ์—์„  ์š”์ฒญ์„ ๋ฐ›์•„ ๋„˜๊ธฐ๋Š” ๋กœ์ง๋งŒ ์ž‘์„ฑํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ •๋ณด ์ฒ˜๋ฆฌ ๋กœ์ง์€ ์„œ๋น„์Šค ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ๊ณณ์—์„œ ์‹คํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค.

EmpDAO.java ์™€EmpVO.java ๋Š” ๊ทธ๋Œ€๋กœ ๋‘๊ณ  Servlet์„ ์ˆ˜์ •ํ•˜๊ณ  ์ƒˆ๋กœ Service ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  view์— ํ•ด๋‹นํ•˜๋Š” jsp ํŒŒ์ผ๋„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ๋ธŒ๋ผ์šฐ์ €์— ๋„์› ๋‹ค.

 

M: EmpVO.java,  EmpDAO.java

V: emp.jsp

C: Servlet(OracleJDBCTest.java)

+)MVCService Class : EmpService.java

 

 

EmpService.java

1
2
3
4
5
6
7
8
9
10
11
import java.util.List;
 
public class EmpService 
{
    public EmpService() {}
    public List<EmpVO> getList() {
        EmpDAO dao = new EmpDAO();
        List<EmpVO> list = dao.getList();
        return list;
    }
}
cs

๊ธฐ์กด์— ์„œ๋ธ”๋ฆฟ์— ์žˆ๋˜ ๋กœ์ง์„ Service ํด๋ž˜์Šค๋กœ ๋”ฐ๋กœ ๋นผ์ฃผ์—ˆ๋‹ค.

 

 

 

Servlet(OracleJDBCTest.java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.io.IOException;
import java.util.*;
import javax.servlet.*;
 
@WebServlet("/oracle")
public class OracleJDBCTest extends HttpServlet 
{
   
   protected void service(HttpServletRequest request, HttpServletResponse response) 
           throws ServletException, IOException 
   {
      EmpService svc = new EmpService();
      List<EmpVO> list = svc.getList();
      request.setAttribute("list", list);
      getServletContext().getRequestDispatcher("/WEB-INF/jsp/emp/emp.jsp").forward(request, response);
     
   }
}
cs

 

 

emp.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> </title>
</head>
<body>
<h1>์‚ฌ์›์ •๋ณด ๋ชฉ๋ก ๋ณด๊ธฐ</h1>
<c:forEach var="emp" items="${list}">
    <div>${emp.empno}  ${emp.ename}  ${emp.hiredate}  ${emp.sal}</div>
</c:forEach>
</body>
</html>
cs

 

 

์‹คํ–‰ ๊ฒฐ๊ณผ : 

์‚ฌ์› ์ •๋ณด๋ฅผ ์ด์   ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


โ—โ—๋ถ€์„œ๋ฒˆํ˜ธ๋กœ ๋ถ€์„œ๋‚ด์— ์žˆ๋Š” ์‚ฌ์›๋“ค ์ „๋ถ€ ์ฐพ๊ธฐโ—โ—

 

EmpDAO.java

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
 
public class EmpDAO 
{    //DB ์ž…์ถœ๋ ฅ(Data Access Object)
    
    private Connection conn;
    private Statement stmt;
    private ResultSet rs;
    //์ ‘์†
    private Connection getConn() 
    {
        try {
            Class.forName("oracle.jdbc.OracleDriver");
            conn = DriverManager.getConnection(
            "jdbc:oracle:thin:@localhost:1521:xe""SCOTT""TIGER");
            this.conn=conn;
            return conn;
        } catch (Exception e) {
            e.printStackTrace();;
        }return null;
    }
    public List<EmpVO> getList()
    {
        getConn();
        try {
            this.stmt = conn.createStatement(); //SQL ๋ฌธ์žฅ์„ ๋‹ค๋ฃจ๋Š” ๊ฐ์ฒด
            this.rs = stmt.executeQuery("SELECT * FROM emp");
            
            List<EmpVO> list = new ArrayList<>();
            while(rs.next())
            {
               int empno = rs.getInt("EMPNO");
               String ename = rs.getString("ENAME");
               java.sql.Date hiredate = rs.getDate("HIREDATE");
               float salary = rs.getFloat("SAL");
               EmpVO emp = new EmpVO();
               emp.setEmpno(empno);
               emp.setEname(ename);
               emp.setHiredate(hiredate);
               emp.setSal(salary);
               list.add(emp);
               
              
            }
            return list;
        }catch(Exception ex) {
            ex.printStackTrace();
        }finally {//์—๋Ÿฌ๊ฐ€ ๋‚˜๋“  ์•ˆ๋‚˜๋“  ๋Œ์•„๊ฐ€๋Š” ๋ฉ”์†Œ๋“œ
            closeAll();
        }
        return null;
    }
    public List<EmpVO> findList( int deptno){
        getConn();
        try {
            this.stmt = conn.createStatement(); 
            this.rs = stmt.executeQuery("SELECT * FROM emp WHERE deptno="+deptno);
            
            List<EmpVO> list = new ArrayList<>();
            while(rs.next())
            {
               int empno = rs.getInt("EMPNO");
               String ename = rs.getString("ENAME");
               java.sql.Date hiredate = rs.getDate("HIREDATE");
               float salary = rs.getFloat("SAL");
               EmpVO emp = new EmpVO();
               emp.setEmpno(empno);
               emp.setEname(ename);
               emp.setHiredate(hiredate);
               emp.setSal(salary);
               list.add(emp);
               
               System.out.printf("%d\t%s\t%s\t%f \n", empno,ename,hiredate,salary);
            }
            return list;
        }catch(Exception ex) {
            ex.printStackTrace();
        }finally {
            closeAll();
        }
        return null;
    }
    private void closeAll(){
        
        try {
            if(rs!=null) rs.close();
            if(stmt!=null) stmt.close();
            if(conn!=null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
cs

55~77 ํ–‰ : getList()๋ฉ”์†Œ๋“œ์™€ ๋น„์Šทํ•˜์ง€๋งŒ, deptno๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฃผ์–ด 59ํ–‰์˜ DB์ฟผ๋ฆฌ๋„ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•œ ์‚ฌ์›์„ ์ „๋ถ€ ์ฐพ๊ฒŒ๋” ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

 

EmpService.java

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
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class EmpService
{    
    private HttpServletRequest request;
    private HttpServletResponse response;
    public EmpService() {}
    
    public EmpService(HttpServletRequest request, HttpServletResponse response) {
        this.request = request;
        this.response = response;
    }
    public String exec() {
        String cmd = request.getParameter("cmd");
        if(cmd==null || cmd.equals("list")) {
            List<EmpVO> list = getList();
            request.setAttribute("list", list);
            return "/WEB-INF/jsp/emp/emp.jsp";
        }else if(cmd.equals("findList")) {
            int deptno = Integer.valueOf(request.getParameter("deptno"));
            List<EmpVO> list = findList(deptno);
            request.setAttribute("list", list);
            return "/WEB-INF/jsp/emp/emp.jsp";
        }
        return null;
    }
    public List<EmpVO> getList() {
        EmpDAO dao = new EmpDAO();
        List<EmpVO> list = dao.getList();
        return list;
    }
    public List<EmpVO> findList(int deptno) {
        EmpDAO dao = new EmpDAO();
        List<EmpVO> list = dao.findList(deptno);
        return list;
    }
}
cs

 

 

Servlet(OracleJDBCTest.java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@WebServlet("/oracle")
public class OracleJDBCTest extends HttpServlet 
{
   
   protected void service(HttpServletRequest request, HttpServletResponse response) 
           throws ServletException, IOException 
   {
      String view = new EmpService(request, response).exec();
      if(view!=null) {
          getServletContext().getRequestDispatcher("/WEB-INF/jsp/emp/emp.jsp").forward(request, response);
      }
   }
}
cs

 

 

์‹คํ–‰๊ฒฐ๊ณผ : 

 

๋ถ€์„œ๋ฒˆํ˜ธ 30์˜ ๋ชจ๋“  ์‚ฌ์›๋“ค์ด ๋‚˜์˜จ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€