1.据我的实际使用Blob只是用来取数据的,存数据时用setBytes(...)或者setObject(...)
2.mysql支持blob类型,它提供了longblob和mediumblob
3.JBOSS是取出实际数据的,不过可以指定lazy load来在需要这个字段的数据时才读取出来。怎样申明blob就要看实际数据库在java类型和sql类型是怎么转换的了,在mysql下可以这样
                            <cmp-field>
<field-name>photo</field-name>
<column-name>PHOTO</column-name>
<jdbc-type>LONGVARBINARY</jdbc-type>
<sql-type>BLOB</sql-type>
</cmp-field>

解决方案 »

  1.   

    对于1虽然ResultSet,PreparedStatement提供了setBlob方法,但是必须用指定jdbc驱动提供的Blob实现类的对象才行(jdk没有提供Blob的实现类)
      

  2.   

    非常感谢jatom(SoftWind) !
    我想,blob确实不能随便传递,至少是还想保持blob特性的话(数据库指针,而不是实际数据),它通常只用在保持ResultSet打开的(用户)操作期间。
    至于ejb,要么在sessionBean用jdbc直接操纵二进制大对象, 或单独为blob作一个cmp EntityBean,并设置MaximunSize较小。当然,还加一个CMR.
    给jatom(SoftWind) 加分。