JavaとMongoDBを用いたファイル保存の実装

JavaとMongoDBを用いたファイル保存の実装

アプリケーション開発において、ファイルの保存と管理は重要な要素です。MongoDBはスケーラビリティと柔軟性に優れたNoSQLデータベースであり、Javaと組み合わせることで効率的なファイル管理が可能です。

MongoDBへの接続処理

まず初めに、JavaアプリケーションからMongoDBへ接続する必要があります。MongoDB公式のJavaドライバを使用して、データベース接続を確立します。

import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;

public class DatabaseConnector {
    private MongoClient client;
    private MongoDatabase dbInstance;

    public DatabaseConnector(String serverAddress, int serverPort, String dbName) {
        client = MongoClients.create("mongodb://" + serverAddress + ":" + serverPort);
        dbInstance = client.getDatabase(dbName);
    }

    public MongoDatabase getDbInstance() {
        return dbInstance;
    }
}

ファイルの格納処理

大きなファイルを扱う際には、MongoDBのGridFS機能を利用します。この機能により、ファイルは複数のチャンクに分割されて保存され、効率的な管理が可能になります。

import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import org.bson.types.ObjectId;

import java.io.*;

public class FileManager {
    private GridFSBucket fsBucket;

    public FileManager(MongoDatabase targetDb) {
        fsBucket = GridFSBuckets.create(targetDb);
    }

    public void saveFile(String sourcePath, String targetName) {
        try {
            InputStream fileStream = new FileInputStream(new File(sourcePath));
            ObjectId fileId = fsBucket.uploadFromStream(targetName, fileStream);
        } catch (IOException exception) {
            exception.printStackTrace();
        }
    }
}

実装例

実際の利用例として、従業員情報を含むstaff_data.txtというファイルをデータベースに保存するケースを考えます。

public class Application {
    public static void main(String[] args) {
        DatabaseConnector connector = new DatabaseConnector("localhost", 27017, "companyDB");
        MongoDatabase db = connector.getDbInstance();

        FileManager fileManager = new FileManager(db);
        fileManager.saveFile("staff_data.txt", "staff_data.txt");
    }
}

上記のコード群を通じて、JavaアプリケーションからMongoDBへファイルを保存する一連の流れを確認できます。MongoDBが提供する柔軟なデータ構造と拡張性により、ファイルストレージソリューションとして非常に適した選択肢となります。

タグ: Java MongoDB file-storage gridfs NoSQL

7月24日 03:38 投稿