JSP에 자바빈이 있다면
자바에는 DTO가 있다.
자바도 DB랑 연동해서 insert/update/delete/select가 가능하다는 사실!!
* DAO(Data Access Object, 데이터 접근 객체)
- 데이터베이스와 연동하여 작업을 처리하는 객체
- DTO 객체를 사용하여 저장된 데이터를 DB 에 전달하여 추가하거나,
- DB 로부터 전달받은 데이터를 외부로 전달하는 역할
- 각 기능별로 메서드를 구분하여 정의
< DTO 객체에 저장되어 있는 데이터 출력>
"이름 : " + dto.getName();
"아이디 : " + dto.getId();
"패스워드 : " + dto.getPassword();
"주민번호 : " + dto.getJumin();
DTO(Data Transfer Object, 데이터 전송 객체)
- DB 작업 시 필요한 데이터(칼럼에 전달하거나 가져올 데이터)를 저장하기 위한 객체
- 하나의 테이블 당 DTO 클래스가 1개 필요
- 보통 컬럼에 대응하는 멤버변수와 생성자, Getter/Setter 메서드로 구성됨
* customer 테이블 생성
번호(idx) INT PK(PRIMARY KEY) AI(AUTO_INCREMENT, 자동 증가)
이름(name) VARCHAR(20) NN(NOT NULL)
아이디(id) VARCHAR(16) UN(UNIQUE) NN
패스워드(password) VARCHAR(16) NN
주민번호(jumin) VARCHAR(14) UN NN
CREATE TABLE customer (
idx INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
id VARCHAR(16) UNIQUE NOT NULL,
password VARCHAR(16) NOT NULL,
jumin VARCHAR(14) UNIQUE NOT NULL
);
▶ 위의 주석에서 생성한 Customer 테이블에 대한 DTO 클래스의 멤버 변수
▶ 생성자 정의(선택사항)
▶ Getter/Setter 정의
<하는 역할>
데이터베이스와 연동하여 회원 정보를 관리하는 클래스 정의
=> 현재 클래스에서는 데이터 준비 작업과 처리 결과만 다루고
실제 데이터베이스와 연동하여 작업을 처리하는 것은 DAO 클래스를 통해 간접적 수행
또한, DB 작업에 필요한 데이터는 DTO 객체를 사용하여 관리
public class CustomerEx {
Customer 객체 생성
CustomerEx ex = new CustomerEx();
외부로부터 전달받은 데이터가 있다고 가정
1) 이름, 아이디, 패스워드, 주민번호를 전달받아 추가한다면==>insert 삽입하는 작업
ex.customerInsert("전지현", "jjh", "jjh123", "881111-2221212");
public void customerInsert(String name, String id, String password, String jumin) {
CustomerDTO dto = new CustomerDTO(0, name, id, password, jumin);
*이때 idx는 임시 값 사용함=0, 아무 값이나 줘도 상관없다
생성자를 별도로 정의하지 않았을 경우 => Setter를 통해 데이터 전달
CustomerDTO dto = new CustomerDTO();
dto.setName(name);
dto.setId(id);
dto.setPassword(password);
dto.setJumin(jumin);
DTO에서 Getter/Setter를 정의했다면
CustomerDAO 객체를 생성하여 insert() 메서드 호출
CustomerDAO dao = new CustomerDAO();
int insertCount = dao.insert(dto);
public class CustomerEx {
CustomerEx ex = new CustomerEx();
2) 아이디, 기존 패스워드, 새 패스워드를 전달받아 수정
ex.customerUpdate("전지현", "jjh123", "1234");
public void customerUpdate(String id, String oldPassword, String newPassword) {
아이디와 기존 패스워드를 일치하면 수정
아래 2가지 방법으로 파라미터를 받을 수 있다!!
1. DTO 객체 생성_ id와 pass 저장, 새 패스워드는 별도로 전달
CustomerDTO dto = new CustomerDTO(0, null, id, oldPassword, null);
CustomerDAO dao = new CustomerDAO();
int updateCount = dao.update(dto, newPassword);
2. DTO 객체를 생성하지 않고, 아이디, 기존 패스워드, 새 패스워드를 각각 전달
CustomerDAO dao = new CustomerDAO();
int updateCount = dao.update(id, oldPassword, newPassword);
public class CustomerEx {
Customer 객체 생성
CustomerEx ex = new CustomerEx();
3) 아이디와 패스워드를 전달받아 해당 레코드 삭제
ex.customerDelete("jjh", "1234");
외부로부터 전달받은 데이터를 사용하여 DAO 객체에 전달 후 INSERT 작업 수행
DAO 객체에 전달할 데이터를 DTO 객체에 저장하여 전달
public void customerDelete(String id, String password) {
CustomerDTO dto = new CustomerDTO(0, null, id, password, null);
CustomerDTO dto = new CustomerDTO();
dto.setId(id);
dto.setPassword(password);
CustomerDAO dao = new CustomerDAO()
int deleteCount = dao.delete(dto);
DTO 객체 생성하여 아이디, 패스워드 저장
DAO 객체 생성하여 delete() 메서드 호출
파라미터 : CustomerDTO 객체, 리턴 타입 : int(deleteCount)
public class CustomerEx {
CustomerEx ex = new CustomerEx();
public void customerSelect() {
CustomerDAO dao = new CustomerDAO();
ArrayList list = dao.select();
ArrayList 객체에 저장된 DTO 객체를 반복해서 꺼내서 CustomerDTO 타입 변수에 저장
for(int i = 0; i < list.size(); i++) {
CustomerDTO dto = (CustomerDTO) list.get(i);
}
int idx = dto.getIdx();
String name = dto.getName();
String id = dto.getId();
String pass = dto.getPassword();
String jumin = dto.getJumin();
System.out.println(idx + ", " + name + ", " + id + ", " + pass + ", " + jumin);
}
}
ㅣ읽느라 수고 많으셨어요~ㅣ
부족한 글을 읽어주셔서 감사드립니다
아직 부족한 게 많으니
틀린 곳이 있다면
조언의 말씀 꼭 부탁드립니다!!!!
[자바] 정규식 regex을 표현하는 Pattern 클래스_ (Matcher /matches 메서드) (0) | 2020.08.29 |
---|---|
[자바] 정규 표현식( Regular Expression,‘regexp') 패턴/ 메타 문자 (0) | 2020.08.26 |
[자바] 형식화 클래스_ DecimalFormat 클래스/메소드/toString (0) | 2020.08.25 |
[자바] 예외 처리(2) throws /throw 왜 쓸까?/ 위임/ Exception/일부러 발생시키는 오류 (0) | 2020.08.24 |
[JAVA] 자바_누적 함수/ 별만들기/짝수,홀수(반복문for문/if문 조건문) (0) | 2020.08.23 |