簡體   English   中英

插入前如何檢查記錄是否存在

[英]How to check whether a record exists before inserting

我正在使用Hibernate 4.3.6 Final和MySQL 5.5.37。

假設我有兩個表BookWords以及一些分析書中單詞並將它們添加到Words表的代碼。 當然,不止一本書中還會出現一些單詞。 但是,如果數據庫中已經有一個單詞,我就不需要一個新條目。 唯一的問題是,Hibernate是否足夠聰明,可以為此提供某種功能?

有兩種解決方案,但是沒有一個是漂亮的:

  1. 在創建任何Word對象之前,請檢查數據庫中是否已有類似的對象。 性能太差了。
  2. 捕獲嘗試插入重復項並處理該異常時引發的異常。 可怕的做法。
  3. 在數據庫中具有單詞的某種靜態索引,該索引會定期更新,然后在列表中搜索單詞。 也許速度稍快,但在性能和內存方面仍然令人恐懼。

有沒有更好的方法?

您有三種選擇:

  1. 從客戶端(休眠)查看記錄是否存在,如果不插入(可能受競爭條件影響)
  2. 嘗試插入記錄,處理錯誤。 您說這是不好的做法,但我會說這是好的做法。
  3. 將觸發器放入數據庫中,如果記錄存在,則跳過插入

我會和#2一起去

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM