비즈니스 컴포넌트

dev_joo·2025년 9월 23일

Spring 노트 필기

목록 보기
6/10

VO (Value Object) = (Data Transfer Object)

레이어와 레이어 사이에서 관련 데이터를 한꺼번에 주고받을 목적으로 사용하는 클래스.
SQL 테이블에 포함된 칼럼과 같은 이름의 변수를 private 접근제한자로 멤버변수로 선언하고 Getter/Setter 메서드로 접근하게 한다.

DAO (Data Access Object)

데이터베이스 연동을 담당하는 클래스, JDBC 드라이버를 통해 CRUD 기능을 구현한다.

JDBC Util

JDBC 드라이버의 객체 관리, DB연결/해제 (Connection 획득/해제) 등
CRUD를 수행하는 모든 DAO가 공통으로 사용하는 기능을 구현한 클래스
getConnection() , close()

<VO이름>DAO

해당하는 테이블과의 CRUD를 구현한 클래스.

JDBC 관련 클래스 java.sql.Connection, java.sql.PreparedStatement, java.sql.ResultSet 변수와 이를 활용한 CRUD 메서드, CRUD를 수행하는 SQL문의 인수 부분을 '?'로 비워놓은 문자열 상수들로 구성된다.

@Component으로 객체를 스프링 컨테이너가 생성할 수 있게 하고 또는 @Repository를 사용해 컨테이너가 객체 생성에 더불어 DB연동과정 예외 처리 기능들을 자동으로 수행하게 한다.

DAO의 CRUD 메서드

JDBCUtil에서 getConnection()을 통해 Connection 객체를 가져오고
Connection.preparedStatement() 메서드에 CRUD를 수행하는 문자열 상수를 인수로 주어 해당sql문에 해당하는 PreparedStatement 객체를 준비한 후,

PreparedStatement.setString() 또는 PreparedStatement.setInt() 등을 통해 SQL문의 ?로 비워져있는 값을 채워넣고 PreparedStatement.executeUpdate()로 테이블을 변경, PreparedStatement.executeQuery()로 테이블의 값을 ResultSet 형태로 읽어오며 CRUD를 수행한다.

각 CRUD 메서드는 일관성 유지를 위해 보통 이름을 insert/update/delete/get/select + <테이블명>, get/select<테이블명>List와 같이 짓는다.

ResultSet

ResultSet.next() 메서드로 조회된 내용이 있는지 확인하고, getInt(), getString(), getDat() 등으로 값을 꺼내 VO를 통해 클라이언트에 제공할 수 있다.

Service

데이터베이스 연동이 포함된 비즈니스 로직을 처리하는 클래스.
보통 서비스 구현 시, DB 구조변화보단 로직의 변화가 자주있고, 외부 API의 교체나 Test가 쉽도록 인터페이스로 묶어 여러 구현체로 교체 가능하도록 관리한다.

DB 관련동작을 호출하기 위해 DAO객체를 멤버변수(private)로 가진다. 이 멤버변수는 의존성 주입으로 처리하기 위해 @Autowired를 설정한다.

@Component()으로 객체를 스프링 컨테이너가 자동으로 생성할 수 있게 하고 또는 @Service()를 사용해 컨테이너가 객체를 자동으로 생성할 수 있게 함과 동시에 서비스 컴포넌트임을 명시한다.
어노테이션의 ()안에는 클라이언트 프로그램에서 서비스 객체를 요청하기 위한 이름(id)을 적는다.

profile
풀스택 연습생. 끈기있는 삽질로 무대에서 화려하게 데뷔할 예정 ❤️🔥

0개의 댓글