본문 바로가기
IT

[오라클] JAVA BLOB 데이타 저장하기

by 지식인정보통신 2025. 1. 14.

1. 필요한 라이브러리

먼저 Oracle JDBC 드라이버가 필요합니다. Oracle JDBC 드라이버는 Oracle 공식 사이트에서 다운로드할 수 있습니다. 또는 pom.xml을 사용하는 Maven 프로젝트의 경우 아래와 같은 의존성을 추가할 수 있습니다.

xml 예시)
 
 
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.8.0.0</version>
</dependency>

2. Java 코드 예시

다음 Java 코드에서는 파일을 읽어 BLOB 데이터를 Oracle 데이터베이스에 저장하는 방법을 보여줍니다.

예시 코드:

import java.sql.*;
import java.io.*;

public class BlobInsertExample {

    public static void main(String[] args) {
        // Oracle DB 연결 정보
        String jdbcUrl = "jdbc:oracle:thin:@your_db_host:1521:your_service";
        String dbUser = "your_db_username";
        String dbPassword = "your_db_password";

        // 삽입할 파일 경로
        String filePath = "path/to/your/file";

        // DB 연결 및 BLOB 데이터 삽입
        Connection conn = null;
        PreparedStatement pstmt = null;
        FileInputStream fis = null;

        try {
            // 1. 데이터베이스 연결
            conn = DriverManager.getConnection(jdbcUrl, dbUser, dbPassword);

            // 2. SQL 쿼리 준비
            String sql = "INSERT INTO example_table (id, name, data) VALUES (?, ?, ?)";
            pstmt = conn.prepareStatement(sql);

            // 3. 파일을 읽어서 BLOB으로 설정
            File file = new File(filePath);
            fis = new FileInputStream(file);
            pstmt.setInt(1, 1);  // 예시로 ID를 1로 설정
            pstmt.setString(2, "example_name");  // 예시로 name을 설정
            pstmt.setBinaryStream(3, fis, (int) file.length());  // 파일을 BLOB으로 삽입

            // 4. 쿼리 실행
            pstmt.executeUpdate();

            System.out.println("BLOB 데이터가 성공적으로 삽입되었습니다.");

        } catch (SQLException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            // 5. 자원 해제
            try {
                if (pstmt != null) pstmt.close();
                if (conn != null) conn.close();
                if (fis != null) fis.close();
            } catch (SQLException | IOException e) {
                e.printStackTrace();
            }
        }
    }
}

3. 코드 설명

  1. JDBC 연결: DriverManager.getConnection을 사용하여 Oracle 데이터베이스에 연결합니다. jdbcUrl, dbUser, dbPassword는 본인의 DB 연결 정보를 입력해야 합니다.
  2. 파일을 읽어 BLOB으로 삽입: 파일을 FileInputStream으로 읽고, PreparedStatement의 setBinaryStream 메서드를 사용하여 BLOB 컬럼에 삽입합니다. 여기서 file.length()는 파일의 크기를 바이트 단위로 반환하며, 이를 통해 파일 크기를 BLOB에 정확히 매핑할 수 있습니다.
  3. SQL 쿼리: INSERT INTO example_table (id, name, data)는 id, name, data 컬럼에 데이터를 삽입하는 SQL 쿼리입니다. data 컬럼은 BLOB 타입이어야 합니다.
  4. 자원 해제: Connection, PreparedStatement, FileInputStream 객체를 finally 블록에서 해제하여 자원 누수를 방지합니다.

4. 데이터베이스 테이블 예시

다음은 BLOB 데이터를 저장할 수 있는 Oracle 테이블의 예시입니다.

CREATE TABLE example_table (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(100),
    data BLOB
);

5. 주의 사항

  • 파일 경로: filePath는 실제 파일의 경로로 설정해야 하며, Oracle DB 서버가 접근할 수 있는 경로여야 합니다.
  • DB 연결 정보: jdbcUrl, dbUser, dbPassword는 실제 사용하는 데이터베이스 정보로 바꿔야 합니다.
  • JDBC 드라이버: Oracle의 JDBC 드라이버(예: ojdbc8.jar)가 클래스패스에 포함되어 있어야 합니다.

이 코드를 실행하면 지정된 파일을 Oracle 데이터베이스의 BLOB 컬럼에 삽입할 수 있습니다.

반응형