[java] 자바에서 파일 시스템과 데이터베이스를 동시에 사용하는 방법

이번에는 자바(Java) 로 개발을 하면서 파일 시스템데이터베이스 를 동시에 사용해야 하는 상황에 대해 알아보겠습니다.

파일 시스템과 데이터베이스 처리

보통 파일 시스템은 정적 데이터를 저장하고, 데이터베이스는 동적 데이터를 저장하는 데 사용됩니다. 자바에서 파일 시스템을 조작하는 데 가장 많이 사용되는 클래스는 java.io.File 클래스이며, 데이터베이스를 다루는 데는 JDBC(Java Database Connectivity) API 가 주로 사용됩니다.

때로는 파일 시스템과 데이터베이스를 함께 사용하여 데이터를 처리해야 하는 경우가 있습니다. 예를 들어, 사용자가 업로드한 파일을 저장하고 동시에 해당 파일에 대한 정보를 데이터베이스에 저장하는 상황이 그런 예입니다.

파일 업로드 및 데이터베이스 처리 예제

아래는 자바에서 파일을 업로드하고 데이터베이스에 정보를 저장하는 간단한 예제입니다. 파일 업로드를 위해 Apache Commons FileUpload 라이브러리를 사용하고, 데이터베이스 처리를 위해 JDBC API를 이용합니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.io.File;
import java.io.InputStream;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

// ...

// 파일 업로드 처리
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
for (FileItem item : items) {
    if (!item.isFormField()) {
        File uploadedFile = new File("path/to/save/uploaded/file");
        item.write(uploadedFile);
        
        // 데이터베이스 처리
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "username", "password");
        String sql = "INSERT INTO files (name, size, content) VALUES (?, ?, ?)";
        PreparedStatement statement = conn.prepareStatement(sql);
        statement.setString(1, item.getName());
        statement.setLong(2, uploadedFile.length());
        statement.setBinaryStream(3, uploadedFile.length());
        statement.executeUpdate();
        // ...
    }
}

마치며

이제 자바에서 파일 시스템과 데이터베이스를 동시에 사용하는 방법에 대해 간단히 알아보았습니다. 파일 시스템과 데이터베이스를 함께 사용함으로써 데이터를 효과적으로 저장하고 관리할 수 있습니다.

더 많은 정보는 Apache Commons FileUploadJDBC 문서를 참고하시기 바랍니다.