[JAVA] Swing 실습하기 - Dao, Dto

Estar·2024년 7월 18일
0

TIL

목록 보기
12/17
post-thumbnail

Dao란?

DAO(Data Access Object)

  • 실제 데이터베이스에 접근하는 객체입니다.
  • 데이터베이스 연결: 데이터베이스에 연결하고 연결을 관리합니다.
  • CRUD 작업: 데이터베이스에 대한 Create, Read, Update, Delete 작업을 수행합니다.
  • 데이터 매핑: 데이터베이스로부터 가져온 데이터를 객체로 변환하고, 객체 데이터를 데이터베이스에 저장합니다.

DAO의 장점

  • 코드의 재사용성: 데이터베이스 접근 로직을 DAO 클래스에 캡슐화하여 여러 곳에서 재사용할 수 있습니다.
  • 유지보수성 향상: 데이터베이스와의 상호작용 코드가 한 곳에 집중되어 있어 수정이 용이합니다.
  • 비즈니스 로직과의 분리: 데이터 접근 로직과 비즈니스 로직을 분리하여 코드를 더 명확하고 구조화할 수 있습니다.
  • 테스트 용이성: DAO를 Mocking하여 비즈니스 로직을 테스트할 때 데이터베이스와의 실제 연결 없이 테스트할 수 있습니다.

Dto란?

DTO(Data Transfer Object)

  • 계층 간 데이터 교환을 위한 객체입니당.
  • 로직이나 알고리즘 없이 Getter, Setter만 있어유
  • 단순한 데이터 구조: DTO는 데이터를 담기 위한 필드와 그 필드에 접근하기 위한 getter 및 setter 메서드로만 구성됩니다.
  • 비즈니스 로직 없음: DTO는 오직 데이터 전송을 목적으로 하기 때문에 비즈니스 로직이 포함되지 않습니다.
  • 계층 간 데이터 전달: 서비스 계층, 데이터 접근 계층(DAO), 프레젠테이션 계층(Swing UI) 등 서로 다른 계층 간에 데이터를 효율적으로 전달하는 역할을 합니다.

DTO와 DAO를 만들어보자

이전에 MySQL을 통해 데이터를 만들었었다.
이젠 이 데이터를 가져와서 인텔리제이에서 쓸 수 있게 만들어보자.

DTO

package app.telecom.dto;

public class Telecom {
    private int customerId;
    private String customerName;
    private int year;
    private String grade;

    public Telecom() {}

    public Telecom(int customerId, String customerName, int year, String grade) {
        super();
        this.customerId = customerId;
        this.customerName = customerName;
        this.year = year;
        this.grade = grade;}

    public int getCustomerId() {
        return customerId;}

    public void setCustomerId(int customerId) {
        this.customerId = customerId;}

    public String getCustomerName() {
        return customerName;}

    public void setCustomerName(String customerName) {
        this.customerName = customerName;}

    public int getYear() {
        return year;}

    public void setYear(int year) {
        this.year = year;

    public String getGrade() {
        return grade;}

    public void setGrade(String grade) {
        this.grade = grade;}

    @Override
    public String toString() {
        return "Customer [customerId=" + customerId + ", customerName=" + customerName + ", year=" + year + ", grade=" + grade + "]";
    }
}

한 줄씩 해석해보겠다.

package app.telecom.dto;
  • 이 클래스가 app.telecom.dto 패키지에 속해 있음을 선언합니다. 이는 클래스의 논리적 위치를 정의하고, 패키지 구조를 통해 코드를 더 잘 관리하고 조직할 수 있게 합니다.
public class Telecom {
  • Telecom이라는 이름의 공개(public) 클래스를 정의합니다. public 키워드는 이 클래스가 다른 패키지에서도 접근 가능함을 의미합니다.
    private int customerId;
    private String customerName;
    private int year;
    private String grade;
  • private int customerId; : customerId 필드는 고객의 고유 식별자를 나타내며, private 접근 제어자로 선언되어 클래스 내부에서만 접근 가능합니다.
  • private String customerName; : customerName 필드는 고객의 이름을 나타내며, 마찬가지로 private 접근 제어자로 선언되었습니다.
  • private int year; : year 필드는 고객과 관련된 연도를 나타내며, private 접근 제어자로 선언되었습니다.
  • private String grade; : grade 필드는 고객의 등급을 나타내며, private 접근 제어자로 선언되었습니다.
    public Telecom() {}

매개변수가 없는 기본 생성자입니다. 인스턴스를 생성할 때 기본값으로 객체를 초기화합니다.

    public Telecom(int customerId, String customerName, int year, String grade) {
        super();
        this.customerId = customerId;
        this.customerName = customerName;
        this.year = year;
        this.grade = grade;
    }
  • public Telecom(int customerId, String customerName, int year, String grade) { : 모든 필드를 초기화하는 매개변수가 있는 생성자입니다. 객체를 생성할 때 특정 값으로 필드를 초기화할 수 있습니다.
  • super(); : 부모 클래스의 생성자를 호출합니다. 이 경우 명시적인 부모 클래스가 없기 때문에 암시적으로 Object 클래스의 생성자를 호출합니다.
  • this.customerId = customerId; : 매개변수로 전달된 customerId 값을 현재 객체의 customerId 필드에 할당합니다.
  • this.customerName = customerName; : 매개변수로 전달된 customerName 값을 현재 객체의 customerName 필드에 할당합니다.
  • this.year = year; : 매개변수로 전달된 year 값을 현재 객체의 year 필드에 할당합니다.
  • this.grade = grade; : 매개변수로 전달된 grade 값을 현재 객체의 grade 필드에 할당합니다.
    참고 : 칼럼은 고객ID, 고객이름, 나이, 등급이다.
    public int getCustomerId() {
        return customerId;
    }
  • public int getCustomerId() { : customerId 필드의 값을 반환하는 getter 메서드입니다. public 접근 제어자로 선언되어 외부에서 호출 가능합니다.
  • return customerId; : customerId 값을 반환합니다.
    public void setCustomerId(int customerId) {
        this.customerId = customerId;
    }
  • public void setCustomerId(int customerId) { : customerId 필드의 값을 설정하는 setter 메서드입니다. public 접근 제어자로 선언되어 외부에서 호출 가능합니다.
  • this.customerId = customerId; : 매개변수로 전달된 customerId 값을 현재 객체의 customerId 필드에 할당합니다.
    public String getCustomerName() {
        return customerName;
    }
  • public String getCustomerName() { : customerName 필드의 값을 반환하는 getter 메서드입니다.
  • return customerName; : customerName 값을 반환합니다.
    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }
  • public void setCustomerName(String customerName) { : customerName 필드의 값을 설정하는 setter 메서드입니다.
  • this.customerName = customerName; : 매개변수로 전달된 customerName 값을 현재 객체의 customerName 필드에 할당합니다.
    public int getYear() {
        return year;
    }
  • public int getYear() { : year 필드의 값을 반환하는 getter 메서드입니다.
  • return year; : year 값을 반환합니다.
    public void setYear(int year) {
        this.year = year;
    }
  • public void setYear(int year) { : year 필드의 값을 설정하는 setter 메서드입니다.
  • this.year = year; : 매개변수로 전달된 year 값을 현재 객체의 year 필드에 할당합니다.
    public String getGrade() {
        return grade;
    }
  • public String getGrade() { : grade 필드의 값을 반환하는 getter 메서드입니다.
  • return grade; : grade 값을 반환합니다.
    public void setGrade(String grade) {
        this.grade = grade;
    }
  • public void setGrade(String grade) { : grade 필드의 값을 설정하는 setter 메서드입니다.
  • this.grade = grade; : 매개변수로 전달된 grade 값을 현재 객체의 grade 필드에 할당합니다.
    @Override
    public String toString() {
        return "Customer [customerId=" + customerId + ", customerName=" + customerName + ", year=" + year + ", grade=" + grade + "]";
    }
  • @Override : 이 메서드가 부모 클래스(Object)의 toString() 메서드를 재정의하고 있음을 나타냅니다.
  • public String toString() { : 객체의 문자열 표현을 반환하는 메서드입니다.
  • return "Customer [customerId=" + customerId + ", customerName=" + customerName + ", year=" + year + ", grade=" + grade + "]"; : customerId, customerName, year, grade 필드의 값을 포함하는 문자열을 반환합니다.
profile
개발자를 꿈꿔요

0개의 댓글

관련 채용 정보