oracle 在9i和10G的版本变化中,对lob处理有了很大的改变:
前者 如果用的是久的JDBC 也就支持9i和 jdk 1.4之前的版本,你就悲剧了,你处理数据的时候, 你就要采取网上先插入空的lob,然后采用行级的锁,然后更新的方法。
如果是10g以及先版本的支持1.5的JDBC 你就可以简单的处理,如果你使用默认的spring的事物,处理在使用Hibernate.create**的方法,然后使用outputstream的注入方式,不要对hibernate进行配置,就可以进入数据库。 但是读取的时候你要注意一点,默认的blob 或者是 clob中处理的时候 hibernate 会使用 SeriableBlobProxy,或者是 SeriableClobProxy的方法,也就意味着它查询出来的时候,如果不读取数据的话,是不会载入数据到java类中, 如果 你采用自定义的 事务处理的时候,你就要特别注意了,如果你的session,已经关闭,意味着你的connection就会关闭。 这时候你以为可以从blob,clob中读数据,就会悲剧了 。默认没有连接了, 所以你的数据操作要在事务关闭之前,这时候还有连接,或者是 你自己管理事务和连接, 也可以达到相应的效果。