之前做的项目都是比较简单,jsp + javabean操作数据库,其中也做过对Oracle的Clob字段进行操作。学习Hibernate,Spring已经一年多了,如何使用Hibernate还操作Oracle的Clob字段,说真的,还没有试过,之前只是看过相应的文档而已,而没有实际的经验。
之前使用JDBC操作Clob基本上就是先插入一个空字符到Clob字段,再把刚刚插入的数据读出来,然后更新Clob字段。Hibernate的操作基本上也是如此。
插入操作:
......
article.setContentClob(Hibernate.createClob(" "));
session.save(article); session.flush(); session.refresh(article, LockMode.UPGRADE); oracle.sql.CLOB clob = (oracle.sql.CLOB) article.getContentClob(); Writer writer = clob.getCharacterOutputStream(); writer.write(article.getContent()); writer.flush(); writer.close();
......
|
读取操作:
......
article = (Article)session.get(Article.class, id);
java.sql.Clob clob = article.getContentClob(); if(null != clob){ String clobString = clob.getSubString(1, (int) clob.length()); article.setContent(clobString); }
......
|
其中,在Article的实体当中有两个字段,定义如下:
......
private java.sql.Clob contentClob;
private String content;
......
|
hbm文件定义如下:
......
<property name="contentClob" column="CONTENT" type="clob"/>
......
|
contentClob是mapping到数据库的Clob字段
而content是处理clob的值,该值主要是负责表单数据与实体之间的对应。