spring+hibernate+Oracle9i+CLOB(成功)

以前转载过一个相同标题的关于这个问题的文章,但是我按他的方法使用时去发生了错误,因此现在我要把我成功的代码发上来. 

<beans>
 <!-- 配置数据源 -->
    <bean id="dataSource"
  class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName">
   <value>jdbc/csss</value>
  </property>
  <property name="jndiEnvironment">
   <props>
    <prop key="java.naming.factory.initial">
     weblogic.jndi.WLInitialContextFactory
    </prop>
    <prop key="java.naming.provider.url">
     t3://localhost:7001
    </prop>
    <prop key="java.naming.security.principal">
     weblogic
    </prop>
    <prop key="java.naming.security.credentials">
     weblogic
    </prop>
   </props>
  </property>
 </bean>

<bean id="sessionFactory"
  class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref local="dataSource" />
  </property>
  <property name="lobHandler" ref="oracleLobHandler"/>  
  <property name="mappingResources">
   <list>
    <!-- 以下是所有的PO映射文件 -->
    <value>com/cse/pojo/meeting/Meeting.hbm.xml</value>  
   </list>
  </property>
  <!-- 定义Hibernate的SessionFactory的属性 -->
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     net.sf.hibernate.dialect.Oracle9Dialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>
   </props>
  </property>
 </bean>

<bean id="nativeJdbcExtractor"
  class="org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor"
  lazy-init="true"/>
  
 <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler"
  lazy-init="true">
    <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/> <!-- 设置本地 Jdbc 对象抽取器 -->
 </bean> 

<!--事物管理器-->

 <bean id="transactionManager"
  class="org.springframework.orm.hibernate.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref local="sessionFactory" />
  </property>
 </bean>
 
  <!-- 定义事务拦截器bean -->  
  <bean id="transactionInterceptor"  
      class="org.springframework.transaction.interceptor.TransactionInterceptor">  
     <property name="transactionManager" ref="transactionManager" />  
     <property name="transactionAttributes">  
       <props>  
     <prop key="get*">
       PROPAGATION_REQUIRED,readOnly,-OrderException
     </prop>
     <prop key="save*">
      PROPAGATION_REQUIRED,-OrderException
     </prop>
      <prop key="remove*">
      PROPAGATION_REQUIRED,-OrderException
     </prop>
     <prop key="delete*">
         PROPAGATION_REQUIRED,-OrderException
     </prop>
     <prop key="update*">
       PROPAGATION_REQUIRED,-OrderException
      </prop>
      <prop key="add*">
       PROPAGATION_REQUIRED,-OrderException
      </prop>
       </props>  
     </property>  
  </bean>  

<!--事务代理工厂--> 

<bean id="proxyFactoryBean" abstract="true"
  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >
  <property name="beanNames">
   <value>*Dao,*Service</value>
  </property>
  <property name="interceptorNames">
   <list>
    <!-- 可以增加其他的拦截器 -->  
    <value>transactionInterceptor</value>
   </list>
  </property>
 </bean>

Dao对象

 <bean id="meetDao" class="com.cse.meeting.dao.MeetingDao" >
  <property name="sessionFactory">
   <ref bean="sessionFactory"/>
  </property>
     <property name="lobHandler" ref="oracleLobHandler"/> <!-- 设置 LOB 处理器 -->
 </bean>

<!--pojo配置-->

<hibernate-mapping package="com.cse.pojo.meeting">
 <class name="Meeting" table="MEETING" lazy="true" batch-size="10">
  <id name="meeting_id" type="long" column="MEETING_ID">
   <generator class="sequence">
    <param name="sequence">meeting_seq</param>
   </generator>
  </id>
  <property name="subject" type="string" column="MEETING_NAME"></property>
  <property name="filepath" type="string" column="FILEPATH"></property>
  <property name="summary" type="clob" column="SUMMARY" length="2000"></property>
  <property name="publisher" type="string" column="PUBLISHER"></property>
  <property name="address" type="string" column="ADDRESS"></property>
  <property name="time" type="date" column="TIME"></property>
  <many-to-one name="department" column="DEPARTMENT_ID" ></many-to-one>
 </class>
</hibernate-mapping>

  在Meeting类中summary的属性:private Clob summary;

//添加会议

public void addMeeting(final com.cse.pojo.meeting.Meeting m) { 
  com.cse.pojo.meeting.Meeting meet = new com.cse.pojo.meeting.Meeting();
  meet.setSubject(m.getSubject());  
  meet.setFilepath(m.getFilepath());
  meet.setPublisher(m.getPublisher());
  meet.setDepartment(m.getDepartment());
  meet.setAddress(m.getAddress());
  meet.setTime(m.getTime());
  meet.setSummary(Hibernate.createClob(""));
  this.getHibernateTemplate().save(meet);

  this.getHibernateTemplate().flush();
  getHibernateTemplate().refresh(meet, LockMode.UPGRADE);  
  OracleThinClob clob = (OracleThinClob)meet.getSummary(); 
  char[] buffer = new char[2000];
  try{
   out = clob.getCharacterOutputStream();   
   buffer = clob.getChars(2000, 0);
   out.write(new String(buffer));
   out.flush();
   this.getHibernateTemplate().flush();
  }catch(Exception e){
   log.debug(e);
  }

  log.debug("采集成功");

 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值