采用得是ORACLE9i数据库,Jboss或Weblogic。
JDBC采用ORACLE9i自带的Class12.jar
-------------
数据库结构:
代码:
CREATE TABLE SNCPARAMETERS
(
ID
NUMBER(19)
NOT NULL,
SNCID
NUMBER(19),
NAME
VARCHAR2(255),
VALUE
CLOB
)
--------------
BO采用xdoclet建立的:
代码:
public class SNCParameters extends BaseObject
{
/**
* Returns the id.
*
* @return
long
* @hibernate.id
*
column = "id"
*
type = "long"
*
generator-class = "native"
*
unsaved-value = "null"
*/
public Long getId()
{
return id;
}
/**
*
Sets the Id attribute of the SNCParameters object
*
* @param
id
The new Id value
*/
public void setId(Long id)
{
this.id = id;
}
/**
* Returns the name.
*
* @return
String
*
* @hibernate.property
*
column = "name"
*
type = "string"
*
not-null = "true"
*
unique = "false"
*/
public String getName()
{
return name;
}
/**
*
Sets the Name attribute of the SNCParameters object
*
* @param
name
The new Name value
*/
public void setName(String name)
{
this.name = name;
}
/**
* Returns the sncId.
*
* @return
Long
*
* @hibernate.property
*
column = "sncId"
*
type = "long"
*
not-null = "true"
*
unique = "false"
*/
public Long getSncId()
{
return sncId;
}
/**
*
Sets the SncId attribute of the SNCParameters object
*
* @param
sncId
The new SncId value
*/
public void setSncId(Long sncId)
{
this.sncId = sncId;
}
/**
* Returns the values.
*
* @return
Clob
*
* @hibernate.property
*
column = "value"
*
type = "clob"
*
not-null = "true"
*
unique = "false"
*/
public Clob getValue()
{
return value;
}
/**
*
Sets the Values attribute of the SNCParameters object
*
* @param
values
The new Values value
*/
public void setValue(Clob value)
{
this.value = value;
}
private Long id;
private Long sncId;
private String name;
private Clob value;
private String valueString;
public String getValueString()
{
return valueString;
}
public void setValueString(String
valueString)
{
this.valueString = valueString;
}
}
注:valueString并不映射到数据库的CLOB字段,只是方便需要使用这个BO的人用GET、SET 处理这个巨长的CLOB字段
------------
xdocLet生成的XML文件:
代码:
<?xml version="1.0"?
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
<hibernate-mapping
<class
name="com.idncn.mc.bo.SNCParameters"
table="SNCParameters"
dynamic-update="false"
dynamic-insert="false"
<id
name="id"
column="id"
type="long"
unsaved-value="null"
<generator class="native"
</generator
</id
<property
name="name"
type="string"
update="true"
insert="true"
column="name"
not-null="true"
unique="false"
/
<property
name="sncId"
type="long"
update="true"
insert="true"
column="sncId"
not-null="true"
unique="false"
/
<property
name="value"
type="clob"
update="true"
insert="true"
column="value"
not-null="true"
unique="false"
/
</class
</hibernate-mapping
--------------------
insert的代码:
代码:
public List batchAddSncParameters(List sncParametersList, Long sncId) throws DbAccessException
{
logger.enterMethod();
List ret = new ArrayList();
try
{
sess = getSession();
if (sncParametersList != null && sncParametersList.size() 0)
{
for (int i = 0; i < sncParametersList.size(); i++)
{
SNCParameters cp = (SNCParameters) sncParametersList.get(i);
long newId = -1;
if (cp != null)
{
SNCParameters cpNew = new SNCParameters();
cpNew.setSncId(sncId);
cpNew.setName(cp.getName());
cpNew.setValue(Hibernate.createClob(" "));
newId = ((Long) sess.save(cpNew)).longValue();
sess.flush();
sess.refresh(cpNew, LockMode.UPGRADE);
String content = cp.getValueString();
String appserver = System.getProperty("appserver", "jboss");
if (!appserver.equalsIgnoreCase("jboss"))
{
//weblogic
OracleThinClob clob = (OracleThinClob) cpNew.getValue();
java.io.Writer pw = clob.getCharacterOutputStream();
pw.write(content);
pw.flush();
pw.close();
}
else
{
//jboss
oracle.sql.CLOB clob = (oracle.sql.CLOB) cpNew.getValue();
java.io.Writer pw = clob.getCharacterOutputStream();
pw.write(content)