cou*_*ech 8 java database jdbc objectoutputstream
我想创建ObjectOutputStream
,但我不想将对象保存在文件中,那么如何做到这一点?所有教程(我发现)只说文件方式:
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(new Date());
oos.close();
Run Code Online (Sandbox Code Playgroud)
我想将对象存储到数据库中,因此我需要在setBinaryStream()
类中指定方法中的流PreparedStatement
.
谢谢回答...
将其存储在字节数组中.你可以用ByteArrayOutputStream
它.这样你就可以使用了PreparedStatement#setBytes()
.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(new Date());
oos.close();
// ...
preparedStatement.setBytes(i, baos.toByteArray());
Run Code Online (Sandbox Code Playgroud)
也就是说,这是一个很好的气味.您确定需要将Java对象序列化到数据库中吗?这样它们就是无法索引和无法搜索的.例如,如果您将每个Person
序列化的数据存储在数据库中,则不SELECT * FROM person WHERE name = 'John'
能再执行此操作.通常的做法是对实体和数据库表进行1:1映射.在Date
例如可以完美被存储在DATETIME
/ TIMESTAMP
列.
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(bos);
os.writeObject(new Date());
os.close();
byte[] data = bos.toByteArray();
Run Code Online (Sandbox Code Playgroud)
所以现在你有了一个字节数组,并用它做你想做的事情.
归档时间: |
|
查看次数: |
38474 次 |
最近记录: |