jbpm4工作於oracle之上hibernate.jdbc.batch_size的設置及問題

  jbpm4是基於hibernate實現的工作流平臺,毫無疑問,她能支持多種主流的數據庫。但在jbpm4中,流程發佈時需要

 

像數據庫寫入blob類型的數據,但在oracle中,stream是不能以batch的方式寫入數據庫的。如果在Oracle數據庫平臺

 

下使用jbpm4,需要設置<prop key="hibernate.jdbc.batch_size">0</prop>,

否則就會發生如下異常:

    org.hibernate.exception.GenericJDBCException: could not insert: [org.jbpm.pvm.internal.lob.Lob]
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
    ..........................
    ..........................
    Caused by: java.sql.SQLException: 不允許的操作: streams type cannot be used in batching
    ..........................
    ..........................
   
    可是這樣的設置會導致大批量數據操作時效率過低。目前想到的方法有兩種:
   
    一、設置多數據源

        爲jbpm4.2設置單獨的數據源,業務數據另外設置一個數據源。這樣增加了不少複雜度,可能會引發事務管理、數據

 

同步等一系列問題。

    二、批量操作時繞開Hibernate的api

        這種辦法又分爲兩種,一種是調用存儲過程,另一種是直接使用jdbc進行數據操作。

    只能想到這些了,都不爽,歡迎大家討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章