Java 我可以为JPA实体中的大型对象选择File或InputStream吗?
我想在数据库中存储一个大对象。我是用JPA的方式做的。 实体:Java 我可以为JPA实体中的大型对象选择File或InputStream吗?,java,jpa,entity,inputstream,Java,Jpa,Entity,Inputstream,我想在数据库中存储一个大对象。我是用JPA的方式做的。 实体: 我可以选择pdfFile字段作为直接文件还是输入流?如果是,使用它有什么好处?您可以在实体类中使用: @Column(name = "DATA", unique = false, nullable = false, length = 100000) private byte[] data; session.beginTransaction(); File file =
我可以选择pdfFile字段作为直接文件还是输入流?如果是,使用它有什么好处?您可以在实体类中使用:
@Column(name = "DATA", unique = false, nullable = false, length = 100000)
private byte[] data;
session.beginTransaction();
File file = new File("C:\test.png");
byte[] imageData = new byte[(int) file.length()];
try {
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(imageData);
fileInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
ImageWrapper image = new ImageWrapper();
image.setImageName("test.jpeg");
image.setData(imageData);
session.save(image); //Save the data
session.getTransaction().commit();
用于保存在数据库中的大型文件
但最好将文件保存在某个位置,然后将该位置保存在数据库中
数据库存储通常比文件系统存储更昂贵
Blog:。你试过其中任何一种吗?我知道在DataNucleus JPA中,你可以做文件,并且它在persist中流式处理文件的内容,因此具有不加载到内存的优点。仅供参考,我认为Hibernate不存在这个问题,他说JPA@NeilStocktonHibernate内部仅使用JPA。看起来问题中使用了@Entity、@Id等。这些只是冬眠状态。谢谢:@Entity、@Id是JPA的标准。Hibernate只是JPA的一个实现。
@Column(name = "DATA", unique = false, nullable = false, length = 100000)
private byte[] data;
session.beginTransaction();
File file = new File("C:\test.png");
byte[] imageData = new byte[(int) file.length()];
try {
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(imageData);
fileInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
ImageWrapper image = new ImageWrapper();
image.setImageName("test.jpeg");
image.setData(imageData);
session.save(image); //Save the data
session.getTransaction().commit();