DAO(Data Access Object)

Jan 22, 2024
DAO(Data Access Object)
 

1. DAO 란?

 
DAO(Data Access Object) 는 데이터베이스에 접근하는 오브젝트로, DAO 를 활용해서 DB에 접속 한 후 조회 및 수정을 위해 사용한다.
 
notion image
 
DAO는 데이터베이스와의 상호 작용을 추상화하는 디자인 패턴 중 하나다. 이 패턴은 데이터베이스와의 통신을 처리하는 코드를 다른 부분에서 분리하여 유지보수성을 향상시키고 코드의 재사용성을 높이는 특징이 있다.
 
자바로 DBMS 연결과 관련된 내용은 이전 블로그에서 확인할 수 있다.
 
 
 
 
💡
DAO(Data Access Object) 는 DB에 접속해서 상호작용하는 것

2. 데이터베이스 연결하기

 
notion image
 
사진과 같이 4개의 .class 를 생성했다. DBConnetcion 은 데이터베이스와 연결을 위한 클래스,
User 는 데이터베이스로 받은 테이블을 받기 위해 생성한 클래스, UserDAO 는 쿼리문 작성을 위한 클래스, App 은 실행을 위한 클래스다.
 
notion image
 
heidiSQL 을 통해 새로운 데이터베이스를 생성했다.
 
우선 자바와 데이터베이스의 연결을 해보자.
 
public class DBConnection { public static Connection getInstance(){ String username = "root"; String password = "1234"; String url = "jdbc:mariadb://localhost:3306/usertest1"; try { Connection conn = DriverManager.getConnection(url,username,password); System.out.println("DB 연결"); return conn; } catch (Exception e) { e.printStackTrace(); } return null ; }
 
연결이 완료되었는지 테스트 폴더에서 실행해본다.
 
notion image
 
public class DBConnectionTest { @Test public void getInstance_test(){ //given = 파라미터 //when = 본코드를 실행 Connection conn = DBConnection.getInstance(); //then = 검증 if(conn==null){ System.out.println("실패"); }else { System.out.println("성공"); } } }
 
notion image
 
 

3. 데이터를 받을 클래스 만들기

 
DB를 통해 받은 자료는 테이블 형태를 받게 된다. 이때 자료는 파싱을 통해 값을 받게 되는데 하나의 자료형이 아닐 때는 오브젝트 타입으로 받아야 한다. 그래서 테이블에 맞는 클래스를 만들어야 한다.
 
public class User { private int number ; private String username ; private String password ; private String phone ; public User(int number, String username, String password, String phone) { this.number = number; this.username = username; this.password = password; this.phone = phone; } public int getNumber() { return number; } public String getUsername() { return username; } public String getPassword() { return password; } public String getPhone() { return phone; } }
 
 
테이블에 맞게 자료형을 만든다. private 로 접근제어자를 설정했기 때문에 생성자가 필요하고,
값을 출력하기 위해 get메서드가 필요하다.
 
DAO 클래스는 다음 블로그에서 작성해보겠다.
Share article

{CODE-RYU};