HIbernate映射LOB

映射LOB对象在Hibernate中有一个固定的模式,就是使用大对象代理。模式都是一样的,映射Lob对象只需要在属性上注解@Lob.

经常网站上需要存储图片或者长消息,会使用Blob和Clob这两个对象,一个是二进制的,一个是字符序列。下面存储用户资料的头像实体@User中

 @Entity
public class User{
    @Id
    private long id;
    @Lob
    private Clob profileImage;

}

读写Lob

//读
session.doWork(connection->{

     User.setProfileImage(ClobProxy.generateProxy(image));
});
entityManager.persist(user);
//写
User user=entityManager.find(User.class,userid);
Reader reader=user.getProfileImage().getCharactorStream();

上面的对于Clob,Blob代码我敲一个,以后备用:

//读
session.doWork(connection->{

     User.setProfileImage(BlobProxy.generateProxy(image));
});
entityManager.persist(user);
//写
User user=entityManager.find(User.class,userid);
InputStream stream=user.getProfileImage().getBinaryStream();

你会发现就是处理的对象不一样,最终可以转化为我所熟悉的InputStream或Reader对象来处理。另外图片的话,存储它再项目中的相对路径于数据库中也是一个好方法,不过这对于分布式的应用来说不算最佳方法。

猜你喜欢

转载自blog.csdn.net/qq_33745102/article/details/80114444
LOB