안녕하세요 엘체프 GG 입니다.

DB에 계정도 만들고 테이블도 만들고 데이터도 툴을 이용해 넣어봤는데.

이제 JAVA(자바)로 eclipse 통해 데이터를 읽고 쓰고 지우고 고치는 것 중에 넣기만 해보겠습니다.


-일딴 프로젝트를 만들고 팩키지를 만듭니다. 


단계별로 만들고 오라클이랑 연동하고 domain,service, test 까지 만들고 값객체(VO)를 만들고 비지니스 로직을 만들어서 test 합겁니다.

마지막 완성된 팩키지랑 파일

압축해놓은

자료입니다.

javaex_20180312.zip

압축풀고 드레그해서 사용하세요


-오라클이랑 연동하기

오라클에서 제공하는 ojdbc jar 파일을 path 등록을 해야합니다.

->프로젝트 우클릭 ->  Build Path -> Configure Build Path


->Libraries -> Add External JARs.. -> 

오라클 설치한곳에서 찾아야함 제경로는 ex)C:\app\GG\product\12.1.0\dbhome_1\jdbc\lib(ojdbc6 도있고 ojdbc7도 있는데 오라12c부터 ojdbc7 쓸 수 있다고 함 그래도 전 ojdbc6를 쓰겟슴다 너무최신 버전은 호환문제가 생길수도 있으니...)

->ojdbc6.jar 선택 -> 열기 ->OK 하면 프로젝트에 Referenced Libraries 및에 ojdbc6.jar 파일 생김 이게 오라클 을 연동해주는 애


-VO 객체 만들기

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
package com.javaex.jse.jdbc.domain;
 
import java.sql.Date;
 
/**
 * VO(값 객체) : Entity,
 * POJO(Plain Old Java Object)
 * , PO(Persistent Object:영속 객체)
 * @author javateam
 *
 */
public class MemberVO {
   
    // 멤버 필드 = DB 필드
    private String memberId;
    private String mermberName;
    private String memberPw;
    private String memberAddr;
    private Date   memberJoindate;
   
    public MemberVO() {}
 
    /**
     * 멤버 필드 초기화 생성자
     *
     * @param memberId 회원 아이디
     * @param mermberName 회원명
     * @param memberPw 회원 패쓰워드
     * @param memberAddr 회원 주소
     * @param memberJoindate 회원 가입일
     */
    public MemberVO(String memberId,
                    String mermberName,
                    String memberPw,
                    String memberAddr,
                    Date memberJoindate) {
        this.memberId = memberId;
        this.mermberName = mermberName;
        this.memberPw = memberPw;
        this.memberAddr = memberAddr;
        this.memberJoindate = memberJoindate;
    }
 
    /**
     * 객체 필드들(내용) 확인
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return String.format("MemberVO [memberId=%s, "
                                     + "mermberName=%s, "
                                     + "memberPw=%s, "
                                     + "memberAddr=%s, "
                                     + "memberJoindate=%s]",
                                        memberId,
                                        mermberName,
                                        memberPw,
                                        memberAddr,
                                        memberJoindate);
       
       
    }
 
    public String getMemberId() {
        return memberId;
    }
 
    public void setMemberId(String memberId) {
        this.memberId = memberId;
    }
 
    public String getMermberName() {
        return mermberName;
    }
 
    public void setMermberName(String mermberName) {
        this.mermberName = mermberName;
    }
 
    public String getMemberPw() {
        return memberPw;
    }
 
    public void setMemberPw(String memberPw) {
        this.memberPw = memberPw;
    }
 
    public String getMemberAddr() {
        return memberAddr;
    }
 
    public void setMemberAddr(String memberAddr) {
        this.memberAddr = memberAddr;
    }
 
    public Date getMemberJoindate() {
        return memberJoindate;
    }
 
    public void setMemberJoindate(Date memberJoindate) {
        this.memberJoindate = memberJoindate;
    }
 
    /**
     * 두 객체간 필드 값들 비교 (해쉬 코드값으로 비교)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((memberAddr == null) ? : memberAddr.hashCode());
        result = prime * result + ((memberId == null) ? : memberId.hashCode());
        result = prime * result + ((memberJoindate == null) ? : memberJoindate.hashCode());
        result = prime * result + ((memberPw == null) ? : memberPw.hashCode());
        result = prime * result + ((mermberName == null) ? : mermberName.hashCode());
        return result;
    }
 
    /**
     * 두 객체간 필드 값들 비교(참/거짓으로 비교)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (!(obj instanceof MemberVO)) {
            return false;
        }
        MemberVO other = (MemberVO) obj;
        if (memberAddr == null) {
            if (other.memberAddr != null) {
                return false;
            }
        } else if (!memberAddr.equals(other.memberAddr)) {
            return false;
        }
        if (memberId == null) {
            if (other.memberId != null) {
                return false;
            }
        } else if (!memberId.equals(other.memberId)) {
            return false;
        }
        if (memberJoindate == null) {
            if (other.memberJoindate != null) {
                return false;
            }
        } else if (!memberJoindate.equals(other.memberJoindate)) {
            return false;
        }
        if (memberPw == null) {
            if (other.memberPw != null) {
                return false;
            }
        } else if (!memberPw.equals(other.memberPw)) {
            return false;
        }
        if (mermberName == null) {
            if (other.mermberName != null) {
                return false;
            }
        } else if (!mermberName.equals(other.mermberName)) {
            return false;
        }
        return true;
    }
 
}
cs

- 비지니스 로직 만들기 

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
package com.javaex.jse.jdbc.service;
 
// import java.util.ArrayList;
import java.util.List;
 
import com.javaex.jse.jdbc.domain.MemberVO;
 
 
 
/**
 * DAO(Data Access Object) : 비즈니스 로직(business(biz) logic)
 * : CRUD(create read update delete) 메서드
 * 
 * @author javateam
 *
 */
public interface MemberDAOService {
    
    // MemberDAOservice dao = MemberDAOServiceImpl.getInstance();
    /**
     * 회원정보 삽입(가입, 생성)
     * 
     * @param memberVO 회원정보 객체(VO)
     * @throws Exception 예외처리
     */
    void insertMember(MemberVO memberVO) throws Exception;
    
    // MemberVO[] getAllMembers() throws Exception;
    // ArrayList<MemberVO> getAllMembers() throws Exception;
    /**
     * 전체 회원정보 조회(검색)
     * 
     * @return 전체 회원정보 객체
     * @throws Exception 예외처리
     */
    List<MemberVO> getAllMembers() throws Exception;
    
    /**
     * 개별 회원정보 조회(검색)
     * 
     * @param memberId 회원 아이디
     * @return 개별 회원정보 객체(VO)
     * @throws Exception 예외처리
     */
    MemberVO getMember(String memberId) throws Exception;
    
    /**
     * 개별 회원정보 수정(갱신, 변경)
     * 
     * @param memberVO 개별 회원정보 객체
     * @throws Exception 예외처리
     */
    void updateMember(MemberVO memberVO) throws Exception;
//    void updateMember(String memberId, 
//                      String memberPw,
//                      String memberAddr) throws Exception;
    
    /**
     * 개별 회원정보 삭제
     * 
     * @param memberId 회원 아이디
     * @throws Exception 예외처리
     */
    void deleteMember(String memberId) throws Exception;
}
cs

----------------------------------------------------------

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package com.javaex.jse.jdbc.service;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
 
import com.javaex.jse.jdbc.domain.MemberVO;
 
 
 
/**
 * DAO 구현 클래스(concrete class)
 * 
 * @author javateam
 *
 */
public class MemberDAOServiceImpl implements MemberDAOService {
 
    // DB 연결 정보
    private static final String oracleDriver = "oracle.jdbc.OracleDriver";
    private static final String oracleURL = "jdbc:oracle:thin:@localhost:1522:orcl"//tnsnames.ora 파일 확인
    private static final String oracleId = "c##test";
    private static final String oraclePw = "test";
    
    // 싱글턴(singleton) 패턴의 DAO 객체
    // MemberDAOservice dao = MemberDAOServiceImpl.getInstance();
    private static MemberDAOServiceImpl instance = null;
    
    private MemberDAOServiceImpl() {}
    
    public static final MemberDAOServiceImpl getInstance() {
        
        if (instance == null)
            instance = new MemberDAOServiceImpl();
        
        return instance;
    }
    
    /**
     * DB 연결(connect)
     * 
     * @return DB 연결 객체
     */
    public Connection getConnection() {
         
        Connection con = null;
        
        try {
                 Class.forName(oracleDriver);
                 con = DriverManager.getConnection(oracleURL, oracleId, oraclePw);
                 
        } catch (ClassNotFoundException e) {
            System.out.println("DAO getConnection : ");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("DAO getConnection : ");
            e.printStackTrace();
        }
        
        return con;
    }
    
    /**
     * DB 연결 자원 반납
     * 
     * @param con DB 연결 객체
     * @param pstmt SQL 해석 객체
     * @param rs SQL 결과셋 객체
     */
    public void closeAll(Connection con, PreparedStatement pstmt, ResultSet rs) {        
        try {
                if (rs != null) rs.close(); //유효성 체크 후 자원반납
                if (pstmt != null) pstmt.close();
                if (con != null) con.close();
        } catch (SQLException e) {
            System.out.println("closeAll SQLE : ");
            e.printStackTrace();
        }
        
    }
 
    /**
     * @see com.javateam.jse.jdbc.service.MemberDAOService#insertMember(com.javateam.jse.jdbc.domain.MemberVO)
     */
    @Override
    public void insertMember(MemberVO memberVO) {
 
        Connection con = null// 연결 객체
        PreparedStatement pstmt = null// SQL 해석 객체
        // String sql = "INSERT INTO member VALUES (?, ?, ?, ?, ?)";
        String sql = "INSERT INTO member VALUES (?, ?, ?, ?, sysdate)";
        
        con = this.getConnection(); // DB 연결
        
        try {
                pstmt = con.prepareStatement(sql); // SQL 해석
                pstmt.setString(1, memberVO.getMemberId());
                pstmt.setString(2, memberVO.getMermberName());
                pstmt.setString(3, memberVO.getMemberPw());
                pstmt.setString(4, memberVO.getMemberAddr());
                // pstmt.setDate(5, memberVO.getMemberJoindate());
                
                if (pstmt.executeUpdate() == 1) {
                    System.out.println("성공적으로 회원정보를 저장하였습니다.");
                } else {
                    System.out.println("회원정보 저장에 실패하였습니다.");
                }
                        
        } catch (SQLException e) {
            System.out.println("insertMember SQLE : ");
            e.printStackTrace();
        } finally {
            this.closeAll(con, pstmt, null);//자원반납
        } // 
    }
 
    /* (non-Javadoc)
     * @see com.javateam.jse.jdbc.service.MemberDAOService#getAllMembers()
     */
    @Override
    public List<MemberVO> getAllMembers() throws Exception {
        // TODO Auto-generated method stub
        return null;
    }
 
    /* (non-Javadoc)
     * @see com.javateam.jse.jdbc.service.MemberDAOService#getMember(java.lang.String)
     */
    @Override
    public MemberVO getMember(String memberId) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }
 
    /* (non-Javadoc)
     * @see com.javateam.jse.jdbc.service.MemberDAOService#updateMember(com.javateam.jse.jdbc.domain.MemberVO)
     */
    @Override
    public void updateMember(MemberVO memberVO) throws Exception {
        // TODO Auto-generated method stub
 
    }
 
    /* (non-Javadoc)
     * @see com.javateam.jse.jdbc.service.MemberDAOService#deleteMember(java.lang.String)
     */
    @Override
    public void deleteMember(String memberId) throws Exception {
        // TODO Auto-generated method stub
 
    }
 
}
 
cs


-INSERT TEST 해보기

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
package com.javaex.jse.jdbc.test;
 
import com.javaex.jse.jdbc.domain.MemberVO;
import com.javaex.jse.jdbc.service.MemberDAOService;
import com.javaex.jse.jdbc.service.MemberDAOServiceImpl;
 
/**
 * Insert Unit Test
 * @author javateam
 *
 */
public class InsertTest {
 
    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
 
        MemberDAOService dao = MemberDAOServiceImpl.getInstance();
        MemberVO member = new MemberVO("inserttest""그린자바""123456789""서울"null);
        
        dao.insertMember(member);
    } 
 
}
 
cs

-데이터 확인 해보기

콘솔창

테이블 확인 

데이터도 성공 적으로 올라왔음 

이제 select, update, delete는 다음에


감사합니다.


+ Recent posts