DTO : 필드와 메소드 ,getter 그리고 setter등을 쓸 수 있는것
package Model;
public class MemberDTO {
//DTO(Data Transfer Object) : 데이터 전달 객체
//테이블 형태 그대로 생성
//필드
private String ID;
private String PW;
private String NAME;
//생성자 메소드 : 객체를 초기화 하기 위한 메소드
//메소드 생성자메소드
public MemberDTO(String ID,String PW,String NAME) {
this.ID=ID;
this.PW=PW;
this.NAME=NAME;
}
//Getter
public String getID() {
return ID;
}
public String getPW() {
return PW;
}
public String getNAME() {
return NAME;
}
}
DAO : jdbc에 대한 데이터 연결및 insert,delete,update등등 가능
DAO(Data Access Object) : DB에 접근하는 객체
web-inf : 관리사무소 같은 느낌으로 대부분 파일들을 모으는곳 (webapp-webinf-lib폴더에 넣기)
OracleDriver : Java와 DB사이에 통로를 만들어 주는 역할
executeUpdate : DB에 변화가 생겼을때,select구문을 제외한 모든 구문
executeQuery : DB에 질의할때,select구문
package Model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class MemberDAO {
Connection conn = null; // 이걸 안써주면 void db_conn은 지역변수가 되니
전역변수로 바꿔서 다른곳에도 써주기 위해서 사용 밑에 Connection 제거하기
PreparedStatement psmt = null; //회원가입메소드로 db연결종료에 연결하기 위해서
ResultSet rs = null;
//DB연결 메소드 <-- 연결하는것은 return이 없음
public void db_conn() {
try {
//1.ojdbc6.jar 라이브러리 불러오기
//C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
//2.OracleDriver class 불러오기
Class.forName("oracle.jdbc.driver.OracleDriver");
//3.DB에 접속하기 위한 카드키 설정(주소,계정,비번)
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "service";
String pw = "12345";
//4.DB에 접속 -> 접속 성공시 Connection 객체로 반환
conn = DriverManager.getConnection(url,user,pw);
} catch (Exception e) {
e.printStackTrace();
}
}
//5.DB연결 종료 메소드
public void db_close() {
try {
if(psmt != null) psmt.close();
if(conn != null) conn.close();
if(rs != null) rs.close();
}catch (Exception e) {
e.printStackTrace();
}
}
--------------------------------------------------------------------
//회원가입 메소드
public int join(MemberDTO dto) {
int row=0;
try {
db_conn();
//5.SQL쿼리 작성 -> ? : 바인드 변수 -> 성능향상 위해서(soft parsing)
// ID,PW,NAME을 쓰게되면 Hard Parsing으로 성능이 느려진다.
String sql = "insert into Member1 values(?,?,?)";
//6.SQL문장을 DB에 전달
psmt = conn.prepareStatement(sql);
//7.바인드 변수 값 채우기
//psmt.set자료형(물음표 순서, 넣을 값)
psmt.setString(1, dto.getID());
psmt.setString(2, dto.getPW());
psmt.setString(3, dto.getNAME());
//8. 실행하기
//int로 return하는 이유 : 몇개의 행이 변화 되었는지 알려주는 것
row = psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {//무조건 열려있으면 닫으세요
db_close();
}return row; //void로 하면 에러가 뜨지만 int로 바꾸면 에러 사라짐
}
public MemberDTO login(MemberDTO dto) {
MemberDTO login_dto=null;
try {
//1.DB연결 메소드 호출
db_conn();
//2.쿼리문 작성
String sql = "select * from member1 where id=? and pw=?";
//3.SQL문 DB에 전달 --> PrepareState 객체 생성(psmt)
psmt = conn.prepareStatement(sql);
//4.받아온 ID와PW를 SQL문에 세팅
psmt.setString(1, dto.getID());
psmt.setString(2, dto.getPW());
//5.실행(executeQuery) 메소드 사용-> ResultSet 객체 반환
rs = psmt.executeQuery();
if(rs.next()) {
String ID = rs.getString(1);
String PW = rs.getNString("PW");
String NAME = rs.getString(3);
login_dto=new MemberDTO(ID,PW,NAME);
}
} catch (Exception e) {
}finally {
//6.DB연결 종료 메소드 호출
db_close();
}
return login_dto;
}
//회원탈퇴 메소드
public int delete(MemberDTO dto) {
int row =0;
try {
//1.DB연결 메소드 호출
db_conn();
//2.쿼리문 작성
String sql = "delete from member1 where id = ?";
//3.SQL문 DB에 전달 --> PrepareState 객체 생성(psmt)
psmt = conn.prepareStatement(sql);
//4.받아온 ID를 SQL문에 세팅
psmt.setString(1, dto.getID());
//5.실행하기
row = psmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
db_close();
}
return row;
}
}
https://sshjim.tistory.com/163
'JSP' 카테고리의 다른 글
Cookie (0) | 2023.11.01 |
---|---|
URLEncoder와 URLDecoder의 차이 (0) | 2023.11.01 |
form의 3가지 조건,action에 대한 요청 (0) | 2023.10.31 |
내장객체(Implicit Object) (0) | 2023.10.30 |
주석 (0) | 2023.10.30 |