jpa中的大型二进制文件

时间:2010-11-20 21:56:11

标签: jpa ejb

我在GF3服务器和远程swing客户端上有ejb + JPA应用程序。我想通过无状态会话bean从客户端上传大型文件到服务器的数据库。 如何从远程swing客户端上传大型二进制数据?

1 个答案:

答案 0 :(得分:1)

在Entity Bean中,您可以使用Blob字段类型& @Lob对其进行注释,将这些数据直接保存到数据库中。

// - 编辑零件

对于这么大的文件,您可以将文件内容提取到固定大小的字节数组中,这样客户端就不会耗尽内存。

客户方:

//-------------    

    remoteInterface.initializeArraySize(ARRAY_SIZE);

    double splitIterations = ARRAY_SIZE/PERMISSIBLE_SIZE;

    for(int i=0; i < splitIterations; i++){

    // Get next byte[PERMISSIBLE_SIZE] from File

        remoteInterface.appendToArray(splittedArray);
    }

    // Finally uploading after processing

        remoteInterface.uploadFile

//---------------

服务器端:

    @Stateless
    public class FileUploadSessionBean implements FileUploadSessionBeanRemote {

    private byte[] byteArray;

    public void initializeArraySize(double arraySize){

         // Initilialized only once
         byteArray = new byteArray[arraySize];
    }

    public void appendToArray(byte[] splittedByteArray){

    /* Append the splittedByteArray at end to byteArray each time
       to build the original array
    */
    }

    public void uploadFile(){

      // Convert byteArray to Blob & persist
    }
}