我是个java初学者,目前在跟着视频教材学习。
    在视频教程里有一个《BBS项目》,数据库用的是MySQL。其中一张基本表里,使用了数据类型text存储BBS中文章的正文信息。
    
    因为我之前只接触过Oracle,所以想用Oracle来作数据库。在网上搜索资料以后,建表时使用了Clob类型来对应例子程序中的text类型。
    然后发现clob是不能直接用insert来插入字符串的。看了一些资料,找到了一个通过代码来插数据的办法。大概是先插空数据EMPTY_CLOB()进表。然后将数据取出,通过bufferwriter直接往这个字段上写字符串。
    基本代码是下面这样的:
*************************
conn.setAutoCommit(false);
//第一步:插入一个空的CLOB
String sql1="insert into news(content,id) values (EMPTY_CLOB(),'1')";
PreparedStatement ps1=conn.prepareStatement(sql1);
ps1.executeUpdate();
ps1.close();//第二步:取出该CLOB
String sql2="select content from news for update";
PreparedStatement ps2=conn.prepareStatement(sql2);
ResultSet rs2=ps2.executeQuery();
while (rs2.next()){
oracle.sql.CLOB clob=(oracle.sql.CLOB)rs2.getClob(1);
BufferedWriter out=new BufferedWriter(clob.getCharacterOutputStream());
String content="1234";//假定这是新闻的内容,当然可以也可以是其他的内容
out.write(content,0,content.length());
out.close();
}
conn.commit();
*************************我现在的问题是这样的:
1、我之前工作时,项目组有严格规定:修改数据不能用for update。理由是容易造成死锁。那么请问上面的代码是否有造成死锁的隐患呢?
2、在现实的项目中,一般是如何存储像文章正文这样的信息呢?是不是并不通过数据库来存储?如果通过数据库存储的话,是使用clob数据类型么?请各位高手指点一下吧,多谢!
PS:对不起,我第一次发帖,不知道怎么给分。(而且好像我之前下载资料都把分下载光了)