상세 컨텐츠

본문 제목

[자바] DTO /DAO_insert/update/delete/select

java_자바

by 쫑메이 2020. 8. 30. 00:09

본문

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

JSP에 자바빈이 있다면

자바에는 DTO가 있다.

자바도 DB랑 연동해서 insert/update/delete/select가 가능하다는 사실!!

 

 

 

 

 

 

 

 

 

 


[자바] DAO(데이터 접근 객체)란?


 

 

* DAO(Data Access Object, 데이터 접근 객체)

- 데이터베이스와 연동하여 작업을 처리하는 객체

- DTO 객체를 사용하여 저장된 데이터를 DB 에 전달하여 추가하거나,

- DB 로부터 전달받은 데이터를 외부로 전달하는 역할

- 각 기능별로 메서드를 구분하여 정의

 

 

 

< DTO 객체에 저장되어 있는 데이터 출력>

"이름 : " + dto.getName();

"아이디 : " + dto.getId();

"패스워드 : " + dto.getPassword();

"주민번호 : " + dto.getJumin();

 

 

 

 

 

 

 

 

 

 

 

 


[자바] DTO( 데이터 전송 객체)란?


 

 

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 정의

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[자바] CustomerEx 클래스_정의


 

 

 

<하는 역할>

 

데이터베이스와 연동하여 회원 정보를 관리하는 클래스 정의

 

=> 현재 클래스에서는 데이터 준비 작업과 처리 결과만 다루고

실제 데이터베이스와 연동하여 작업을 처리하는 것은 DAO 클래스를 통해 간접적 수행

 

또한, DB 작업에 필요한 데이터는 DTO 객체를 사용하여 관리

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[자바] Insert() 메서드 정의_호출

및 DAO 객체 생성


 

 

 

 

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);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

[자바] Update() 메서드 정의_

호출 및 DAO 객체 생성


 

 

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);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[자바] Delete() 메서드 정의_

호출 및 DAO 객체 생성


 

 

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)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

[자바] select() 메서드 정의_

호출 및 DAO 객체 생성


 

 

 

 

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);

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

ㅣ읽느라 수고 많으셨어요~ㅣ

 

 

 

 

 

 


 

 

 


 

 

 

 

 

 

부족한 글을 읽어주셔서 감사드립니다

아직 부족한 게 많으니

틀린 곳이 있다면

조언의 말씀 꼭 부탁드립니다!!!!

 

 

 

 

 

 

 


 

 

반응형

관련글 더보기