[JDBC] 클래스생성, 분리와 확장, 상속 적용예제(DAO, DTO)

Devel/JDBC|2020. 8. 19. 21:33
반응형
클래스분리 예제
한 테이블에 적어서 사용했던 클래스를 분리해보자.

-Dept
Dept테이블의 하나의 레코드 저장용도로만 사용한다.

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
package com.dto;
 
//  Dept테이블의 하나의 레코드 저장용도
public class Dept {
 
    private int deptno;
    private String dname;
    private String loc;
    public int getDeptno() {
        return deptno;
    }
    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getLoc() {
        return loc;
    }
    public void setLoc(String loc) {
        this.loc = loc;
    }
    public Dept(int deptno, String dname, String loc) {
        super();
        this.deptno = deptno;
        this.dname = dname;
        this.loc = loc;
    }
    
    public Dept(){}
    @Override
    public String toString() {
        return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
    }
    
    
    
    
    
}
 

-OracleDAO
driver, url, usrid, pswd를 기술해주고, driver 연결, connection과 resultset, preparedStatement를 기술해준다.
ArrayList로 select sql문을 수행한다.
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
package com.dao;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 
import com.dto.Dept;
 
public class OracleDAO {
 
    String driver="oracle.jdbc.driver.OracleDriver";
    String url="jdbc:oracle:thin:@localhost:1521:orcl";
    String userid ="scott";
    String passwd ="tiger";
    Connection con = null;
    ResultSet rs = null;
    PreparedStatement pstmt = null;
    public OracleDAO() {
    try {
 
        Class.forName(driver);
        System.out.println("로딩 성공");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    }//end OracleDAO
    
    public ArrayList<Dept> select()throws SQLException {
        ArrayList<Dept> list = new ArrayList<Dept>();
        
        try {
            con = DriverManager.getConnection(url,userid,passwd);
            String sql = "select * from dept";
            pstmt = con.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while(rs.next()) {
                Dept dept = new Dept();
                dept.setDeptno(rs.getInt(1));
                dept.setDname(rs.getString(2)); 
                dept.setLoc(rs.getString(3)); 
                
                list.add(dept);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if( rs != null) rs.close();
                if( pstmt != null) pstmt.close();
                if( con != null) con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }        
        return list;
    }//end select
    
    public void insert() {}
    public void update() {}
    public void delete() {}
    
}
 
 
 
 

-OracleService
main에서 출력하기 전 연결다리 
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
package com.service;
 
import java.sql.SQLException;
import java.util.ArrayList;
 
import com.dao.OracleDAO;
import com.dto.Dept;
 
public class OracleService {
 
    OracleDAO dao;//null값이 기본
 
    public OracleService() {
        dao = new OracleDAO();
    }
    public ArrayList<Dept> select()throws SQLException {
        ArrayList<Dept> list = dao.select();
    
    
        return list;
    }
    
    public void insert(Dept dept){}
}
 

-Main
OracleService 객체 생성을 해주고 try, catch로 foreach문을 사용해 출력한다.

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
import java.sql.SQLException;
import java.util.ArrayList;
 
import com.dto.Dept;
import com.service.OracleService;
 
public class OracleMain {
 
    public static void main(String[] args) {
 
        OracleService service = new OracleService();
 
        try {
            ArrayList<Dept> list=service.select();
            for (Dept dept : list) {
                System.out.println(dept);
            }
        
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  //전체데이터 출력
    
    }
 
}


댓글()
loading