■ DB 모듈화 전체 구성
* 화살표 방향은 무시하고 전체적인 흐름만 보세요.
■ Connection(서버연결) 관리 객체
드라이버를 로딩하고, DB 서버와 연결하는 객체 |
- DAO가 Connection 관리 객체에게 DB 연결
곧, Connection을 요청하면, Connection 인스턴스를 DAO에게 전달한다.
[코드 예시]
package service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBservice {
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println("드라이버를 찾을 수 없습니다.");
}
}
private static DBservice single = null;
public static DBservice getInstance() {
if (single == null) {
single = new DBservice();
}
return single;
}
private DBservice(){
}
public Connection getConnection() throws SQLException{
Connection conn = null;
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "test1";
String pwd = "test1";
conn = DriverManager.getConnection(url, user, pwd);
return conn;
}
}
■ VO (Value Object) : 칼럼의 맴버와 타입을 저장관리하는 객체
DB의 테이블 칼럼을 필드맴버로 저장한 객체 |
- 객체지향적으로 데이터의 속성 정보를 저장하는 객체이다.
- 일종의 구조체와 같아 보인다.
[Person이라는 객체 안에 name, age, addr]이 등록되는 것과 같이 객체의 속성을 저장한다.
Rf. 과거에 DTO (Data Tranfer Object) 라고도 불렀다.
- VO는 읽기, DTO는 읽기/쓰기 모두 가능한 경우
[코드 예시]
package vo;
public class MemberVo {
int ein;
String name;
String addr;
String ssn; //주민번호
int hireday;
String id;
String pwd;
//Getter, Setter
public int getEin() {
return ein;
}
public void setEin(int ein) {
this.ein = ein;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getSsn() {
return ssn;
}
public void setSsn(String ssn) {
this.ssn = ssn;
}
public int getHireday() {
return hireday;
}
public void setHireday(int hireday) {
this.hireday = hireday;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
■ DAO (Data Access Object) - DB정보를 CRUD하는 객체
데이터를 DB에서 불러와, LIST형태로 저장하는 객체 *데이터 CRUD 담당 |
- 기능 : Create / Read/ Update / Delete
- 메서드 : insert / select / update / delete
selectList() --> 테이블의 리스트 정보를 선택하여 반환 insert(VO) --> 신규 레코드 삽입 update(VO) --> 기존 레코드 수정 delete(칼럼명) --> 칼럼 삭제 |
[코드 예시]
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import service.DBservice;
import vo.MemberVo;
public class MemberDao {
private static MemberDao single = null;
private MemberDao() {};
public static MemberDao getInstance() {
if (single == null) {
single = new MemberDao();
}
return single;
}
public List<MemberVo> selectList(){
List<MemberVo> list = new ArrayList<MemberVo>();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM member";
try {
conn = DBservice.getInstance().getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
MemberVo vo = new MemberVo();
vo.setEin(rs.getInt("ein"));
vo.setName(rs.getString("name"));
vo.setAddr(rs.getString("addr"));
vo.setSsn(rs.getString("ssn"));
vo.setHireday(Integer.parseInt(rs.getString("hireday"))+1900);
vo.setId(rs.getString("id"));
vo.setPwd(rs.getString("pwd"));
list.add(vo);
}
} catch (Exception e) {
} finally {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
return list;
}
}
'Language > SQL' 카테고리의 다른 글
[DATABASE] PL/SQL 프로시져 (0) | 2022.04.27 |
---|---|
[DATABASE] MVC 모델 구현 _ 성적 관리 프로그램 (0) | 2022.04.25 |
[DATABASE] PreparedStatement를 사용하여 시큐어코딩하기 (0) | 2022.04.21 |
[DATABASE] JAVA프로그램과 DB 연결하기 (0) | 2022.04.21 |
[DATABASE] JOIN (0) | 2022.04.21 |