国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Hibernate自動(dòng)事務(wù)揪出的編碼不規(guī)范

2019-11-14 21:06:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
Hibernate自動(dòng)事務(wù)揪出的編碼不規(guī)范 2014-09-09 14:59 by 一人游走, ... 閱讀, ... 評(píng)論, 收藏, 編輯

最近重構(gòu)的項(xiàng)目(java初學(xué)中),Service層一個(gè)獲取通知記錄報(bào)錯(cuò):

org.sPRingframework.dao.InvalidDataaccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement....Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 視圖或函數(shù) 'v_web_NotifyLog' 不可更新,因?yàn)樾薷臅?huì)影響多個(gè)基表。

明明是獲取記錄,哪來(lái)的修改,排查邏輯,存儲(chǔ)過(guò)程...模型里面有一屬性做了數(shù)據(jù)修改操作(不規(guī)范1)

     public void setLastState(String lastState) {          if (lastState == null) {               this.lastState = "未知";          } else {               this.lastState = lastState;          }     }

在事務(wù)結(jié)束時(shí)(通過(guò)AOP配置的自動(dòng)事務(wù))就會(huì)自動(dòng)提交,將更改回寫(xiě)數(shù)據(jù)到數(shù)據(jù)庫(kù),就引發(fā)了錯(cuò)誤!在配置AOP時(shí)明確制定了哪些Service是只讀事務(wù),比如get*、find*,但是這個(gè)Service就沒(méi)有按照這種命名(不規(guī)范2):public ResultData preNotifyStatus(int nid, int action) , 改為getNotifyStatus 問(wèn)題解決。

    <tx:advice id="txtAdvice" transaction-manager="txtManager">        <tx:attributes>            <tx:method name="find*" read-only="true" propagation="REQUIRED" />            <tx:method name="get*" read-only="true" propagation="REQUIRED" />            <tx:method name="login*" read-only="true" propagation="REQUIRED" />            <tx:method name="*" propagation="REQUIRED" />        </tx:attributes>    </tx:advice>

總結(jié):

  1. 模型不要做數(shù)據(jù)修改,如果需做簡(jiǎn)單的數(shù)據(jù)處理,可以考慮在get*中做。
  2. 方法命名要規(guī)范,獲取數(shù)據(jù)這樣的只讀操作一定要用get、find這樣的動(dòng)詞開(kāi)頭,方便全局控制。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鄂伦春自治旗| 金山区| 抚松县| 全州县| 龙胜| 中超| 若尔盖县| 饶阳县| 红桥区| 化德县| 嘉祥县| 甘孜| 松原市| 云阳县| 家居| 浠水县| 广昌县| 京山县| 名山县| 荔波县| 台东市| 水城县| 泰和县| 无锡市| 绥德县| 安阳市| 宁武县| 昆明市| 布尔津县| 昭平县| 斗六市| 泗水县| 湘潭市| 温泉县| 绥芬河市| 石狮市| 磴口县| 申扎县| 威信县| 洛宁县| 密山市|