Photo photo = new Photo();
photo.setName("Jambhala");
photo.setPhoto(Hibernate.createBlob(""));
session.save(photo);
session.flush();
session.refresh(photo, LockMode.UPGRADE); //锁住此对象
oracle.sql.Blob blob = photo.getPhoto(); //取得此blob的指针
OutputStream out = blob.getBinaryOutputStream();
//写入一个文件
File f = new File("C:\\test.rar");
FileInputStream fin = new FileInputStream(f);
int count=-1,total=0;
byte[] data = new byte[(int)fin.available()];
out.write(data);
fin.close();
out.close();
session.flush();
String DRIVER = "oracle.jdbc.driver.OracleDriver";
//Oracle连接用URL
private static final String URL = "jdbc:oracle:thin:@testora:1521:orac";
//用户名
private static final String USER = "scott";
//密码
private static final String PASSWORD = "pswd";
//数据库连接
private static Connection conn = null;
//SQL语句对象
private static Statement stmt = null;
//@roseuid 3EDA089E02BC
public LobPros(){}
//往数据库中插入一个新的Clob对象
//@param infile 数据文件
//@throws java.lang.Exception
//@roseuid 3EDA089E02BC
public static void clobInsert(String infile) throws Exception {
//设定不自动提交
boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
try{
//插入一个空的Clob对象
stmt.executeUpdate("INSERT INTO TEST_CLOB VALUES ('111', EMPTY_CLOB())");
//查询此Clob对象并锁定
ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");
while(rs.next()){
//取出此Clob对象
oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
//向Clob对象中写入数据
BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
BufferedReader in = new BufferedReader(new FileReader(infile));
int c;
while((c=in.read()) != -1){
out.write(c);
}
in.close();
out.close();
}
//正式提交
conn.commit();
}catch(Exception e){
//出错回滚
conn.rollback();
throw e;
}
//恢复原提交状态
conn.setAutoCommit(defaultCommit);
}