我尝试使用以下方法一次插入所有数据:
userModel.setServiceData(gson.toJson(sortedResponse).getBytes());
这为大量数据提供了内存。
所以我试图使用类似的东西将块中的数据添加到postgres数据库中:
byte[] chunkedMessage = {};
for (Iterator<Message> iterator = sortedResponse.iterator(); iterator.hasNext();) {
Message message = (Message) iterator.next();
chunkedMessage = gson.toJson(message).getBytes();
userModel.setServiceData(chunkedMessage);
}
显然,这将最终存储最后一个块而不是所有块。
我正在使用hibernate,所以想一想hibernate查询是否有任何简单方法,或者可能像上面代码中的内容一样简单。
答案 0 :(得分:0)
不要使用数组(byte[]
),因为它需要为要插入数据库的完整数据分配内存并切换到流。将userModel.serviceData
的类型从byte[]
更改为java.sql.Blob
,这允许从InputStream或Reader创建新的Blob实例:
Blob blob = Hibernate.getLobCreator(session).createBlob(stream, size);