Hibernate操作Clob类型完整版.docx
《Hibernate操作Clob类型完整版.docx》由会员分享,可在线阅读,更多相关《Hibernate操作Clob类型完整版.docx(21页珍藏版)》请在冰豆网上搜索。
Hibernate操作Clob类型完整版
Hibernate操作Clob类型完整版!
最近,使用Hibernate操作Clob。
上网看了不少资料,感觉五花八门,实现起来的方法都各不相同。
有的是Hibernate2.0上的。
有的是加入了spring的支持,把clob当成string做处理(的确很好,但是不适合新手)
........
而且,某些代码根本都执行不了~浪费我们的时间,55555555。
于是,法老参考了一些官网的方法加以修改,干脆重新写一个完整元操作版本。
包含:
insert,update,delete,select四大基本方法!
供大家参考!
-------------------------------------------
测试环境介绍:
WINDWOSXPSP2;Eclipse3.2;JDK1.4.2
Hibernate-Version:
3.0.5;oracle9i;
=====================
重点说明:
1。
配置文件hbm.xml里把clob的type="clob"
片段如下
<propertyname="bsznContent"type="clob">
<columnname="BSZN_CONTENT"not-null="true"/>
</property>
2。
实体bean中,导入java.sql.Clob包(注意不是oracle.sql.CLOB个人习惯用血统纯点的.这里鄙视一下oracle。
嘿嘿)
在该字段对应的实体文件里面,增加以下两个变量及其相应的get/set方法
importjava.sql.Clob;
...
privateClobbsznContent;
privateStringbsznContentString;
...
publicClobgetBsznContent(){
returnthis.bsznContent;
}
publicvoidsetBsznContent(ClobbsznContent){
this.bsznContent=bsznContent;
}
publicStringgetBsznContentString(){
returnbsznContentString;
}publicvoidsetBsznContentString(StringbsznContentString){
this.bsznContentString=bsznContentString;
}
bsznContent属性是默认的clob,bsznContentString属性是对bsznContent做转换时候用的
----------------------------------------
好了废话不多说,把代码写下来吧~
建表SQL
=================
/*Table:
"cmp_bszn"相关SQL*/
/*==============================================================*/
createtable"cmp_bszn"(
"id"INTEGERnotnull,
"kind"CHAR
(2)notnull,
"bszn_title1"VARCHAR2(200)notnull,
"bszn_title2"VARCHAR2(200),
"bszn_code"VARCHAR2(50),
"bszn_bumen"VARCHAR2(50),
"bszn_date"VARCHAR2(50),
"bszn_content"CLOBnotnull,
"sys_date"DATEdefaultSYSDATEnotnull,
constraintPK_CMP_BSZNprimarykey("id")
);hibernate.cfg.xml由于调试用,用的是JDBC连接方法,要使用连接池,请自行修改.
记得自己把数据库地址和用户名,秘密改下<?
xmlversion='1.0'encoding='UTF-8'?
>
<!
DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"GeneratedbyMyEclipseHibernateTools.-->
<hibernate-configuration><session-factory>
<propertyname="connection.username">sa</property>
<propertyname="connection.url">
jdbc:
oracle:
thin:
@127.0.0.1:
1521:
web
</property>
<propertyname="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<propertyname="connection.password">saweb</property>
<propertyname="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property><propertyname="show_sql">true</property>
<propertyname="connection.useUnicode">true</property>
<propertyname="connection.characterEncoding">GBK</property>
<!
--設定事務管理的工廠類-->
<propertyname="hibernate.transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
</property>
<propertyname="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</property>
<mappingresource="clob/cmpBszn.hbm.xml"/>
</session-factory></hibernate-configuration>
cmpBszn.hbm.xml<?
xmlversion="1.0"?
>
<!
DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"
<!
--
MappingfileautogeneratedbyMyEclipse-HibernateTools
-->
<hibernate-mapping>
<classname="cmpBszn"table="CMP_BSZN"schema="SA">
<idname="id"type="java.lang.Long">
<columnname="ID"precision="22"scale="0"/>
<generatorclass="increment"></generator>
</id>
<propertyname="kind"type="java.lang.String">
<columnname="KIND"length="2"not-null="true"/>
</property>
<propertyname="bsznTitle1"type="java.lang.String">
<columnname="BSZN_TITLE1"length="200"not-null="true"/>
</property>
<propertyname="bsznTitle2"type="java.lang.String">
<columnname="BSZN_TITLE2"length="200"/>
</property>
<propertyname="bsznCode"type="java.lang.String">
<columnname="BSZN_CODE"length="50"/>
</property>
<propertyname="bsznBumen"type="java.lang.String">
<columnname="BSZN_BUMEN"length="50"/>
</property>
<propertyname="bsznDate"type="java.lang.String">
<columnname="BSZN_DATE"length="50"/>
</property>
<propertyname="bsznContent"type="clob">
<columnname="BSZN_CONTENT"not-null="true"/>
</property>
<propertyname="sysDate"type="java.util.Date">
<columnname="SYS_DATE"length="7"not-null="true"/>
</property>
</class>
</hibernate-mapping>抽象类AbstractcmpBszn.java//defaultpackageimportjava.sql.Clob;
importjava.util.Date;/**
*AbstractcmpBszngeneratedbyMyEclipse-HibernateTools
*/publicabstractclassAbstractcmpBsznimplementsjava.io.Serializable{//FieldsprivateLongid;
privateStringkind;
privateStringbsznTitle1;
privateStringbsznTitle2;
privateStringbsznCode;
privateStringbsznBumen;
privateStringbsznDate;
privateClobbsznContent;
privateStringbsznContentString;
privateDatesysDate;//Constructors/**defaultconstructor*/
publicAbstractcmpBszn(){
}/**minimalconstructor*/
publicAbstractcmpBszn(Stringkind,StringbsznTitle1,ClobbsznContent,DatesysDate){
this.kind=kind;
this.bsznTitle1=bsznTitle1;
this.bsznContent=bsznContent;
this.sysDate=sysDate;
}
/**fullconstructor*/
publicAbstractcmpBszn(Stringkind,StringbsznTitle1,StringbsznTitle2,StringbsznCode,StringbsznBumen,StringbsznDate,ClobbsznContent,DatesysDate){
this.kind=kind;
this.bsznTitle1=bsznTitle1;
this.bsznTitle2=bsznTitle2;
this.bsznCode=bsznCode;
this.bsznBumen=bsznBumen;
this.bsznDate=bsznDate;
this.bsznContent=bsznContent;
this.sysDate=sysDate;
}
//PropertyaccessorspublicLonggetId(){
returnthis.id;
}
publicvoidsetId(Longid){
this.id=id;
}publicStringgetKind(){
returnthis.kind;
}
publicvoidsetKind(Stringkind){
this.kind=kind;
}publicStringgetBsznTitle1(){
returnthis.bsznTitle1;
}
publicvoidsetBsznTitle1(StringbsznTitle1){
this.bsznTitle1=bsznTitle1;
}publicStringgetBsznTitle2(){
returnthis.bsznTitle2;
}
publicvoidsetBsznTitle2(StringbsznTitle2){
this.bsznTitle2=bsznTitle2;
}publicStringgetBsznCode(){
returnthis.bsznCode;
}
publicvoidsetBsznCode(StringbsznCode){
this.bsznCode=bsznCode;
}publicStringgetBsznBumen(){
returnthis.bsznBumen;
}
publicvoidsetBsznBumen(StringbsznBumen){
this.bsznBumen=bsznBumen;
}publicStringgetBsznDate(){
returnthis.bsznDate;
}
publicvoidsetBsznDate(StringbsznDate){
this.bsznDate=bsznDate;
}publicClobgetBsznContent(){
returnthis.bsznContent;
}
publicvoidsetBsznContent(ClobbsznContent){
this.bsznContent=bsznContent;
}publicDategetSysDate(){
returnthis.sysDate;
}
publicvoidsetSysDate(DatesysDate){
this.sysDate=sysDate;
}publicStringgetBsznContentString(){
returnbsznContentString;
}publicvoidsetBsznContentString(StringbsznContentString){
this.bsznContentString=bsznContentString;
}
}
实体类cmpBszn//defaultpackage
//GeneratedbyMyEclipse-HibernateToolsimportjava.sql.Clob;
importjava.util.Date;/**
*cmpBszngeneratedbyMyEclipse-HibernateTools
*/
publicclasscmpBsznextendsAbstractcmpBsznimplementsjava.io.Serializable{//Constructors/**defaultconstructor*/
publiccmpBszn(){
}/**minimalconstructor*/
publiccmpBszn(Stringkind,StringbsznTitle1,ClobbsznContent,DatesysDate){
super(kind,bsznTitle1,bsznContent,sysDate);
}
/**fullconstructor*/
publiccmpBszn(Stringkind,StringbsznTitle1,StringbsznTitle2,StringbsznCode,StringbsznBumen,StringbsznDate,ClobbsznContent,DatesysDate){
super(kind,bsznTitle1,bsznTitle2,bsznCode,bsznBumen,bsznDate,bsznContent,sysDate);
}
}SessionManager管理类(这个是通用的,如果你要自己写也可以)packageHib_DB;importorg.hibernate.HibernateException;
importorg.hibernate.Session;
importorg.hibernate.cfg.Configuration;/**
*ConfiguresandprovidesaccesstoHibernatesessions,tiedtothe
*currentthreadofexecution.FollowstheThreadLocalSession
*pattern,see{@linkhttp:
//hibernate.org/42.html}.
*/
publicclassSessionManager{/**
*Locationofhibernate.cfg.xmlfile.
*LocationshouldbeontheclasspathasHibernateuses
*#resourceAsStreamstylelookupforitsconfigurationfile.
*Thedefaultclasspathlocationofthehibernateconfigfileis
*inthedefaultpackage.Use#setConfigFile()toupdate
*thelocationoftheconfigurationfileforthecurrentsession.
*/
privatestaticStringCONFIG_FILE_LOCATION="/hibernate.cfg.xml";
privatestaticfinalThreadLocalthreadLocal=newThreadLocal();
privatestaticConfigurationconfiguration=newConfiguration();
privatestaticorg.hibernate.SessionFactorysessionFactory;
privatestaticStringconfigFile=CONFIG_FILE_LOCATION;privateSessionManager(){
}
/**
*ReturnstheThreadLocalSessioninstance.Lazyinitialize
*the<code>SessionFactory</code>ifneeded.
*
*@returnSession
*@throwsHibernateException
*/
publicstaticSessiongetSession()throwsHibernateException{
Sessionsession=(Session)threadLocal.get();if(session==null||!
session.isOpen()){
if(sessionFactory==null){
rebuildSessionFactory();
}
session=(sessionFactory!
=null)?
sessionFactory.openSession()
:
null;
threadLocal.set(session);
}returnsession;
}/**
*Rebuildhibernatesessionfactory
*
*/
publicst