采用得是Oracle9i数据库,Jboss或Weblogic。
JDBC采用ORACLE9i自带的Class12.jar
-------------
数据库结构:
代码:
CREATE TABLE SNCPARAMETERS
(
ID NUMBER(19) NOT NULL,
SNCIDNUMBER(19),
NAME VARCHAR2(255),
VALUECLOB
)
--------------
BO采用xdoclet建立的:
代码:
public class SNCParameters extends BaseObject
{
/**
* Returns the id.
*
* @returnlong
* @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
*
* @paramidThe new Id value
*/
public void setId(Long id)
{
this.id = id;
}
/**
* Returns the name.
*
* @returnString
*
* @hibernate.property
*column = "name"
*type = "string"
*not-null = "true"
*unique = "false"
*/
public String getName()
{
return name;
}
/**
*Sets the Name attribute of the SNCParameters object
*
* @paramnameThe new Name value
*/
public void setName(String name)
{
this.name = name;
}
/**
* Returns the sncId.
*
* @returnLong
*
* @hibernate.property
*column = "sncId"
*type = "long"
*not-null = "true"
*unique = "false"
*/
public Long getSncId()
{
return sncId;
}
/**
*Sets the SncId attribute of the SNCParameters object
*
* @paramsncIdThe new SncId value
*/
public void setSncId(Long sncId)
{
this.sncId = sncId;
}
/**
* Returns the values.
*
* @returnClob
*
* @hibernate.property
*column = "value"
*type = "clob"
*not-null = "true"
*unique = "false"
*/
public Clob getValue()
{
return value;
}
/**
*Sets the Values attribute of the SNCParameters object
*
* @paramvaluesThe 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(StringvalueString)
{
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)