자바 웹 개발/웹 데이터베이스
[Web] 데이터베이스 연동
ycraah
2024. 8. 19. 23:56
오라클 데이터베이스 연동
오라클 데이터베이스와 연동하기 위해서는 드라이버가 필요하다. 다음 경로에 설치한다.
클래스 생성
VO는 데이터를 담은 객체이다. 데이터베이스와 직접 상호작용을 합니다.
DAO는 데이터베이스와 직접 상호작용하는 객체이다. 아래는 DAO의 특성이다.
- 데이터베이스 연결 및 해제
- 데이터 CRUD(Create, Read, Update, Delete) 작업 수행
- SQL 쿼리 실행 및 결과 반환
VO 예시)
데이터에서 조회한 레코드의 컬럼 값을 속성에 저장해야하니 컬럼 이름과 동일한 자료형과 이름으로 소성을 선언하고 겟터, 셋터를 생성한다.
public class MemberVO {
private String id;
private String pwd;
private String name;
private String email;
private Date joinDate;
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;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getJoinDate() {
return joinDate;
}
public void setJoinDate(Date joinDate) {
this.joinDate = joinDate;
}
}
DAO 예시)
public class MemberDAO {
private PreparedStatement pstmt;
private Connection con;
private DataSource dataFactory;
public MemberDAO() {
try {
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
dataFactory = (DataSource) envContext.lookup("jdbc/oracle");
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean isExisted(MemberVO memberVO) {
boolean result = false;
String id = memberVO.getId();
String pwd = memberVO.getPwd();
try {
con = dataFactory.getConnection(); //DECODE(A, B, X, Y) A = B 이면 X를 출력, A ≠ B 이면 Y를 출력
String query = "SELECT DECODE(COUNT(*),1,'true','false') AS RESULT FROM T_MEMBER"; //오라클 decode()함수를 이용하여 ID와 비밀번호가 테이블에 존재하는지에 따라 true/false 조회
query += " where id=? and pwd=?";
pstmt = con.prepareStatement(query); //SQL문을 작성한 후 데이타베이스에 조회
pstmt.setString(1, id);
pstmt.setString(2, pwd);
System.out.print("pstmt : " + query + id + pwd);
ResultSet rs = pstmt.executeQuery();
rs.next(); //커서를 첫 번째 레코드로 위치
result = Boolean.parseBoolean(rs.getString("result")); //해당 순서 열에 있는 데이터를 String으로 받아옴
} catch(Exception e) {
e.printStackTrace();
}
return result;
}
}