아티팩트, DAO, JAVA Bean

2024. 8. 8. 12:29·Toby Spring 3.1

https://sundaland.tistory.com/203

 

Artifact, DAO, Java Bean

 

sundaland.tistory.com

 

아티팩트 (Artifact)

자바 개발에서 아티팩트라는 용어는 빌드 과정에서 생성되는 파일이나 결과물을 의미한다. 이 아티팩트는 다양한 형태를 가지며, 자바 개발의 중요한 산출물이다.

 

자바 아티팩트의 종류

  • JAR 파일 (Java Archive) : 자바 클래스 파일과 해당 애플리케이션 또는 라이브러리에 필요한 리소스 파일을 압축한 아카이브 파일이다. 이는 자바 애플리케이션을 배포하거나 라이브러리를 공유할 때 흔히 사용된다.
  • WAR 파일 (Web Application Archive) : 웹 애플리케이션의 배포를 위해 사용되는 아티팩트이다. JSP, 서블릿, 자바 클래스, XML, HTML, 자바스크립트 파일 등 웹 애플리케이션을 구성하는 모든 파일을 포함한다.
  • EAR 파일 (Enterprise Application Archive) : 주로 앤터프라이즈 애플리케이션을 위해 사용되며, 여러 개의 모듈을 하나의 아카이브로 묶는다. 대규모 시스템에서 다양한 애플리케이션 구성 요소를 통합하기 위해 사용된다.
  • 클래스 파일 : 자바 소스 코드가 컴파일된 후 생성되는 바이너리 파일이다. 이 파일들은 JAR, WAR, EAR 파일로 패키징되기 전 단계의 산출물이다.

아티팩트의 중요성

  • 재사용성과 공유 : 아티팩트는 다른 프로젝트나 팀원들과 코드나 라이브러리를 공유하기 위한 표준화된 방법을 제공한다.
  • 버전 관리 : 아티팩트는 특정 버전으로 관리되어, S/W의 버전 관리나 배포 과정을 효과적으루 수행할 수 있게 한다.
  • 자동화된 빌드 및 배포 : 현대의 개발 환경에서는 아티팩트의 새성과 배포가 자동화 도구를 통해 관리된다. 이는 개발 과정을 효율적으로 만들어준다.

자바 아티팩트는 개발 과장에서 매우 중요한 역할을 하며, S/W 구성, 배포, 버전 관리에 있어 핵심적인 요소이다.


DAO (Data Access Object)

자바에서 데이터베이스의 데이터에 접근하기 위한 객체를 의미한다. 이 패턴은 액세스 로직과 비즈니스 로직을 분리하여 구현하는데 사용된다.

  1. 데이터 접근 추상화 및 캡슐화 : DAO는 DB와의 모든 상호작용을 캡슐화하여, 나머지 애플리케이션에 데이터 소스로부터의 데이터 접근 방식을 숨긴다. 이는 DB 작업을 수행하는 API를 제공함으로써, 나머지 애플리케이션이 DB에 직접 접근하는 것을 방지한다.
  2. 데이터 소스로부터의 독립성 : DAO를 사용하면 애플리케이션은 특정 DB나 저장소 기술에 종속되지 않는다. 이를 통해 DB 시스템을 변경하거나 다른 종류의 저장소로 마이그레이션할 때 애플리케이션의 나머지 부분에 미치는 영향을 최소화할 수 있다.
  3. 재사용 및 유지보수의 용의성 : 공통된 접근 로직을 DAO에 구현함으로써, 코드 중복을 줄이고 재사용성을 높일 수 있다. 또한 데이터 접근 로직을 한 곳에 집중시켜 두면 유지보수가 훨씬 용이해진다.

DAO 패턴 구현 방법

  • DAO 인터페이스 : DB 작업을 수행하는데 필요한 메서드를 정의한다.
  • DAO 구현 클래스 : DAO 인터페이스를 구현하며, 실제 DB 연결과 데이터 조작 로직을 포함한다.
  • DTO : DB 데이터를 나타내며, DAO를 통해 DB와 애플리케이션 간에 데이터를 전송하는데 사용된다.

예를 들어 사용자 정보를 관리하는 애플리케이션에서는 UserDao 인터페이사 정의될 수 있고, 이 인터페이스에는 getUserById, saveUser, updateUser, deleteUser와 같은 메서드를 포함할 수 있다.

UserDAOImpl 클래스는 이 인터페이스를 구현하고 실제 DB 로직을 처리한다.

DAO 패턴은 DB 관련 코드의 가독성과 유지 보수성을 향상시키며, 테스트와 데이터 소스 교체를 용이하게 만든다.

 

▼ 사용자 정보를 저장하는 자바 빈 User 클래스

package springbook.user.domain;

public class User { 
    String id;
    String name; 
    String password;
    
    public String getld() { 
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name; 
    }
    
    public void setName(String name) { 
        this.name = name;
    }

    public String getPassword() {
        return password; 
    }

    public void setPassword(String password) { 
        this.password = password;
    } 
}

자바 빈 (Java Bean)

자바에서 재사용 가능한 컴포넌트를 만들기 위한 일종의 규약 또는 표준이다. 자바 빈은 다양한 자바 애플리케이션, 특히 웹 애플리케이션과 데스트톱 애플리케이션에서 데이터를 표현하고 관리하는데 널리 사용된다.

자바 빈은 특정 규칙을 따르는 단순한 클래스이다.

  • 캡슐화 : 자바 빈은 데이터(프로퍼티)를 private 필드로 저장하고, 이에 접근하기 위해 public 메서드인 getter와 setter를 제공한다. 이를 통해 데이터 접근과 수정을 제어할 수 있으며, 객체의 상태와 행동을 적절히 분리한다.
  • 직렬화 가능성 : 자바 빈은 Serializable 인터페이스를 구현함으로써, 객체의 상태를 파일이나 네트워크를 통해 전송 가능한 형태로 변환할 수 있다. 이는 자바 빈이 퍼시스턴스(persistance) 및 원격 전송에 적합하게 만든다.
  • 기본 생성자 : 자바 빈은 파라미터가 없는 기본 생성자를 가진다. 이는 자바 빈을 쉽게 인스턴스화하고, 프레임워크가 라이브러리가 리플랙션을 사용해 객체를 자동으로 생성할 수 있게 한다.
  • 재사용 가능성 : 표준화된 디자인 패턴을 사용함으로써, 자바 빈은 다양한 환경에서 재사용될 수 있다. 이는 개발자가 일관된 방식으로 객체를 사용하고 관리할 수 있게 해준다.

자바 빈의 장점

  1. 유연성 : 자바 빈은 코드의 재사용성을 높이고 유지보수를 용의하게 한다. 표준화된 구조 덕분에 다른 개발자도 쉽게 이해하고 활용할 수 있다.
  2. 통합성 : 다양한 자바 기반 프레임워크 및 라이브러리와 쉽게 통합된다, 예를 들어 Spring 프레임워크는 자바 빈을 사용하여 의존성 주입과 같은 고급 기능을 제공한다.
  3. 데이터 바인딩과 처리 용의성 : 웹 애플리케이션에서 자바 빈은 폼 데이터를 쉽게 취급할 수 있게 해준다. 사용자 인터페이스와 백앤드 데이터 처리 사이의 연결 고리 역할을 한다.

▼ 사용자의 입력을 받아서 처리하는 코드의 예

public class UserBean implements Serializable {
    private String name;
    private String email;

    public UserBean() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

위 자바 빈은 사용자의 입력을 받아서 처리하는데 사용될 수 있으며, 다양한 비즈니스 로직에서 재사용될 수 잇다. 이 처럼 자바 빈은 간단하면서도 매우 강력한 도구로, 자바 기반 애플리케이션의 개발을 촉진한다.

'Toby Spring 3.1' 카테고리의 다른 글

관심사의 분리 (Separation of Concerns)  (1) 2024.08.08
원칙과 패턴 (Open-Closed Principle)  (1) 2024.08.08
UML (Unified Modeling Language)  (0) 2024.08.05
'Toby Spring 3.1' 카테고리의 다른 글
  • 관심사의 분리 (Separation of Concerns)
  • 원칙과 패턴 (Open-Closed Principle)
  • UML (Unified Modeling Language)
GLaDiDos
GLaDiDos
GLaDiDos의 티스토리GLaDiDos 님의 블로그입니다.
GLaDiDos
GLaDiDos의 티스토리
GLaDiDos
전체
오늘
어제
  • 분류 전체보기 (207)
    • 자바 튜토리얼 (19)
    • 스프링 프레임워크 (15)
      • IoC (Inversion of Control) (7)
    • Toby Spring 3.1 (4)
    • 테스트 주도 개발 (TDD) (4)
    • 디자인 패턴 (1)
    • 깃 (Git) (1)
    • Reflection (10)
    • 스프링 AOP (15)
    • JPA (Java Persistence API) (10)
    • 네트워크 (5)
    • Spring Boot (48)
      • Annotations (3)
      • Auto-Configuration (12)
      • Spring Data JPA (28)
      • Spring Security (4)
    • Apache Tomcat (7)
    • Web on Servlet Stack (29)
    • 자바 (4)
    • 개인 코드 분석 (9)
    • Spring Security in Action (11)
    • AWS (Amazon Web Service) (2)
      • EC2 (2)
    • 도커 (Docker) (0)
    • 리눅스 (1)
    • 스프링 마이크로서비스 (8)
    • 마이크로서비스 아키텍처 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

링크

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO· Designed By정상우.v4.6.1
GLaDiDos
아티팩트, DAO, JAVA Bean
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.