JAVA 연습장
DAO 클래스를 더욱 간단하게! DataSource 클래스를 따로 만들어보기
개발 일기
2021. 7. 26. 22:18
안녕하세요.
JDBC의 DAO 클래스를 VO 클래스를 활용하여 만드는 작업까지 진행을 해보았는데요.
DAO 클래스의 CRUD 메소드(insert, delete 등등)에 DB접근 단계를 위한 클래스를 따로 만들어 활용해보겠씁니다.
1. DataSource 클래스 만들기
- Driver 클래스 객체 생성
- Connection 객체 생성(DBServer에 연결)
public class DataSource {
public Connection getConnection() throws Exception{
String driverClass= "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@182.237.126.19:1521:xe";
String user = "DB접속정보";
String password = "DB접속정보";
Class.forName(driverClass);
Connection con = DriverManager.getConnection(url,user,password);
return con;
}
public void releaseConnection(Connection con) throws Exception{
con.close();
}
}
=> DB Connection 단계를 클래스화 함
2. DAO 클래스에 DataSource 클래스 활용
public class AddressDao {
private DataSource dataSource;
public AddressDao() {
this.dataSource = new DataSource();
}
public Address selectByNo(int no) throws Exception {
Address findAddress = null;
String selectSql = "select no,id,name,phone,address from address where no = ?";
Connection con = dataSource.getConnection();
PreparedStatement pstmt = con.prepareStatement(selectSql);
pstmt.setInt(1, no);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
int n = rs.getInt("no");
String id = rs.getString("id");
String name = rs.getString("name");
String phone = rs.getString("phone");
String address = rs.getString("address");
findAddress = new Address(n, id, name, phone, address);
}
rs.close();
pstmt.close();
dataSource.releaseConnection(con);
return findAddress;
}
}
=> DataSource 테이블의 dataSource 객체 생성 후 insert 메소드 내 DB접근정보 기재하지 않고
getConnection 메소드 호출하여 DB접근정보 받아서 사용함
DB에 접근하기 위한 소스를 클래스 객체화하여 DAO클래스를 보다 간단하게 수정해보았습니다.
감사합니다!