개발/JAVA

JDBC와 오라클 데이터베이스: 자바로 간단한 작가 관리 애플리케이션 만들기

예니03 2025. 1. 23. 11:08
반응형

JDBC(Java Database Connectivity)는 자바 개발자라면 반드시 알아야 할 중요한 기술 중 하나입니다. 이번 포스트에서는 초보자도 쉽게 따라 할 수 있는 작가 관리 애플리케이션을 만들어 보겠습니다. 이 프로젝트를 통해 데이터베이스 연결부터 CRUD 작업까지 체계적으로 배우고, 깔끔한 코드 구조를 이해하게 될 거예요.

프로젝트 개요

이번 애플리케이션은 아래와 같은 기능을 제공합니다:

  1. 모든 작가 목록 조회
  2. 새로운 작가 추가
  3. 작가 정보 수정
  4. 작가 삭제
  5. 특정 ID로 작가 검색

1단계: 데이터베이스 설정

시작하기 전에 Oracle 데이터베이스에 아래의 테이블 구조를 만들어 주세요:

CREATE TABLE author (
    author_id   NUMBER(10)    PRIMARY KEY,
    author_name VARCHAR2(100) NOT NULL,
    author_desc VARCHAR2(500)
);

CREATE SEQUENCE seq_author_id
START WITH 1
INCREMENT BY 1;

위의 테이블과 시퀀스를 통해 작가 데이터를 저장하고 관리할 수 있습니다.

 

2단계: 프로젝트 구조 설계

애플리케이션은 아래와 같은 주요 클래스로 구성됩니다:

  1. AuthorDAO: 데이터베이스 접근을 위한 인터페이스.
  2. AuthorDAOImplOracle: AuthorDAO를 구현하여 실제 데이터베이스 작업을 수행하는 클래스.
  3. AuthorVO: 작가 정보를 저장하기 위한 Value Object 클래스.
  4. DaoApp: 애플리케이션의 메인 클래스.
  5. DatabaseConfig: 데이터베이스 설정을 저장하는 클래스.

 

3단계: 주요 코드 설명

AuthorDAO 인터페이스

AuthorDAO는 데이터베이스와의 작업을 정의합니다. 아래는 해당 인터페이스 코드입니다:

public interface AuthorDAO {
    List<AuthorVO> getList(); // 전체 작가 목록 가져오기
    AuthorVO get(Long id);    // 특정 ID의 작가 가져오기
    boolean insert(AuthorVO authorVo); // 작가 추가
    boolean delete(Long id);  // 작가 삭제
    boolean update(AuthorVO authorVo); // 작가 정보 수정
}

AuthorVO 클래스

AuthorVO는 작가 데이터를 저장하는 객체입니다. 이 클래스는 데이터베이스 테이블의 필드와 매칭되며, 간단한 생성자와 getter, setter를 포함합니다.

public class AuthorVO {
    private Long authorId;
    private String authorName;
    private String authorDesc;

    // 기본 생성자
    public AuthorVO() {}

    // 모든 필드를 포함한 생성자
    public AuthorVO(Long authorId, String authorName, String authorDesc) {
        this.authorId = authorId;
        this.authorName = authorName;
        this.authorDesc = authorDesc;
    }

    // getter와 setter
    public Long getAuthorId() { return authorId; }
    public void setAuthorId(Long authorId) { this.authorId = authorId; }

    public String getAuthorName() { return authorName; }
    public void setAuthorName(String authorName) { this.authorName = authorName; }

    public String getAuthorDesc() { return authorDesc; }
    public void setAuthorDesc(String authorDesc) { this.authorDesc = authorDesc; }

    @Override
    public String toString() {
        return "AuthorVO [authorId=" + authorId + ", authorName=" + authorName + ", authorDesc=" + authorDesc + "]";
    }
}

AuthorDAOImplOracle 클래스

이 클래스는 AuthorDAO를 구현하며, JDBC를 사용하여 데이터베이스 작업을 처리합니다.

public class AuthorDAOImplOracle implements AuthorDAO {

    private Connection getConnection() throws SQLException {
        Connection conn = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            String dburl = "jdbc:oracle:thin:@localhost:1522:xe";
            conn = DriverManager.getConnection(dburl, DatabaseConfig.DB_USER, DatabaseConfig.DB_PASS);
        } catch (ClassNotFoundException e) {
            System.err.println("드라이버를 찾을 수 없습니다.");
            e.printStackTrace();
        }
        return conn;
    }

    @Override
    public List<AuthorVO> getList() {
        List<AuthorVO> list = new ArrayList<>();
        try (Connection conn = getConnection();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT author_id, author_name, author_desc FROM author")) {

            while (rs.next()) {
                list.add(new AuthorVO(rs.getLong(1), rs.getString(2), rs.getString(3)));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }

    // 다른 메서드들 (get, insert, update, delete)도 위와 같은 방식으로 구현
}

 

 

4단계: 메인 클래스 - DaoApp

이 클래스는 애플리케이션의 진입점으로, 사용자가 데이터를 입력하고 CRUD 작업을 실행할 수 있습니다.

public class DaoApp {
    public static void main(String[] args) {
        listAuthors();
    }

    private static void listAuthors() {
        AuthorDAO dao = new AuthorDAOImplOracle();
        dao.getList().forEach(System.out::println);
    }
}

 

마무리

이번 포스트에서는 간단한 JDBC 애플리케이션을 통해 오라클 데이터베이스와 상호작용하는 방법을 배웠습니다. 프로젝트를 직접 실행해 보면서 JDBC의 기본 개념을 확실히 익혀보세요!

반응형