728x90
반응형
[ class 종류 ]
VO : Value Object or DTO : Data Transfer Object
- 정보 저장을 위한 Class
- 데이터베이스의 Table과 연관됨
ex) MemberDTO
DAO : Data Access Object
- Repository
- 데이터베이스 연동 로직을 가지고있는 객체
main class
1. MemberDAO()의 findMemberById(id)를 구현해보는 예제
- primary key인 id를 이용해 MEMBER TABLE의 회원정보가 전달하는 id에 부합되면, MemberVO 객체를 반환받고,
ID에 해당하는 회원이 없으면 null을 반환한다.
/TestMemberDAO.java
package test;
import java.sql.SQLException;
/*
* MemberDAO()의 findMemberById(id)를 구현해보는 예제
* primary key인 id를 이용해 MEMBER TABLE의 회원정보가 전달하는 id에
* 부합되면, MemberVO 객체를 반환받고,
* ID에 해당하는 회원이 없으면 null을 반환한다.
*/
import model.MemberDAO;
import model.MemberVO;
public class TestMemberDAO {
public static void main(String[] args) {
try { // MemberDAO에서 throw해준 Exception을 try/catch해준다
// 1. driver loading
MemberDAO dao = new MemberDAO();
String id = "java";
MemberVO vo = null;
try {
// id로 회원정보 찾기
vo = dao.findMemberById(id);
if (vo == null)
System.out.println(id + " 아이디에 해당하는 회원정보가 없습니다");
else
System.out.println("검색결과 -> " + vo);
} catch (SQLException e) {
e.printStackTrace();
}
} // try
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}// main
}// class
2. MemberDAO의 getAllMemberList()를 구현하는 예제
- MEMBER TABLE 에 있는 모든 회원 정보를 ArrayList<MemberVO> 타입의 list 로 정보를 반환 받아보는 연습
/TestMemberDAO2.java
package test;
import java.sql.SQLException;
import java.util.ArrayList;
import model.MemberDAO;
import model.MemberVO;
/*
* MemberDAO의 getAllMemberList()를 구현하는 예제
* : MEMBER TABLE 에 있는 모든 회원 정보를 ArrayList<MemberVO> 타입의
* list 로 정보를 반환 받아보는 연습
*/
public class TestMemberDAO2 {
public static void main(String[] args) {
try
{
MemberDAO dao ;
ArrayList<MemberVO> list;
try {
//1. driver loading
dao = new MemberDAO();
// getAllMemberList() 함수로 읽어오기
list = dao.getAllMemberList();
if (list.isEmpty()){
System.out.println("테이블에 정보가 없습니다.");
}else {
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
} // try
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}// main
}// class
DAO class
/MemberDAO.java
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
/*
* DAO : Data Access Object
* - Repository
* - 데이터베이스 연동 로직을 가지고있는 객체
*/
public class MemberDAO {
private String driver = "oracle.jdbc.OracleDriver";
private String dbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
private String user = "scott";
private String password = "tiger";
// Constructor 생성자
// 생성자 단계에서 driver loading을 실행하도록 한다
// driver loading 단계에서 exception 발생 시, 실행한 곳에서 오류가 나도록 throws한다
public MemberDAO() throws ClassNotFoundException {
Class.forName(driver);
}
public MemberVO findMemberById(String id) throws SQLException {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
MemberVO vo = null;
try {
// 2. Connection
con = DriverManager.getConnection(dbUrl, user, password);
// 3. SQL문 정의
String sql = "SELECT PASSWORD, NAME, ADDRESS "
+ "FROM MEMBER "
+ "WHERE ID=?";
// 4. PreparedStatement
pstmt = con.prepareStatement(sql);
// 5. SQL문 조건 완성
pstmt.setString(1, id);
// 6. SQL 실행
rs = pstmt.executeQuery();
if (rs.next()) {
String id2 = rs.getString(1);
String password = rs.getString(2);
String name = rs.getString(3);
String address = rs.getString(4);
vo = new MemberVO(id2, password, name, address);
}
return vo;
} finally {
// 7. close
closeAll(rs, pstmt, con);
}
}
public void closeAll(ResultSet rs, PreparedStatement pstmt, Connection con) throws SQLException {
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (con != null)
con.close();
}
public ArrayList<MemberVO> getAllMemberList() throws SQLException {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<MemberVO> list = new ArrayList<MemberVO>();
try
{
// 2. Connection
con = DriverManager.getConnection(dbUrl, user, password);
// 3. SQL문 정의
String sql = "SELECT * FROM MEMBER";
// 4. PreparedStatement
pstmt = con.prepareStatement(sql);
// 5. SQL 실행
rs = pstmt.executeQuery();
//6. list에 정보추가
while(rs.next()) {
MemberVO vo = new MemberVO(rs.getString(1),rs.getString(2),
rs.getString(3),rs.getString(4));
list.add(vo);
}//while
}
finally
{ //7. close
closeAll(rs, pstmt, con);
}
return list;
}//getAllMemberList
}
VO class
/MemberVO.java
package model;
/*
* VO : Value Object
* DTO : Data Transfer Object
* - 정보 저장을 위한 Class
* - 데이터베이스의 Table과 연관됨
* ex) MemberDTO
*/
public class MemberVO {
private String id;
private String password;
private String name;
private String address;
// Constructor를 2 가지로 만들어준다
//1. 필수요소만 넣는 경우 - not null columns
public MemberVO(String id, String password, String name) {
super();
this.id = id;
this.password = password;
this.name = name;
}
// 생성자 overloading
//2. 모든 요소 넣는 경우 - all columns
public MemberVO(String id, String password, String name, String address) {
super();
this.id = id;
this.password = password;
this.name = name;
this.address = address;
}
@Override
public String toString() {
return "MemberVO [id=" + id + ", password=" + password + ", name=" + name + ", address=" + address + "]";
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
[ 결과 ]
728x90
반응형