簡體   English   中英

與Hibernate一起使用的Java數據結構可存儲未知數量的參數?

[英]Java data structure to use with Hibernate to store unknown number of parameters?

出現以下問題:我想基於本地化文本呈現一條新聞消息流。 在這些消息的各個位置,我必須插入參數以“自定義”它們。 我想你知道我的意思;)

我的問題可能屬於“哪種風格最好?” 類別:您將如何在數據庫中存儲這些參數(它們可能是字符串和數字,需要根據語言環境設置格式)? 我正在使用Hibernate進行ORM,我可以想到以下解決方案:

  • 構建一個組合的String並保存為這樣(我認為這很難維護)
  • 做一些花哨的規范化,並使每個參數在數據庫上排成一行(我想很干凈,但是卻是性能的噩夢)
  • 將參數放入Array,Map或其他Java數據結構中,然后將其保存為二進制格式(可能會導致大量開銷)

我傾向於選擇#3,但是恐怕數據庫的大小可能會很昂貴。 你怎么看?

如果您能夠承受使用具有單獨表的規范化方法帶來的性能影響,那么我會采用這種方法。 我們使用與您在工作中的第一個建議相同的方法,但它會變得混亂 ,尤其是當您達到列限制並且鍵/值開始被截斷時!

進行歸一化。 我建議類似的東西:

表格訊息編號

表參數message_id鍵值

在大多數情況下,將序列化的Java對象存儲在數據庫中是一件很糟糕的事情。 由於它們難以維護,因此您無法使用“簡單”的SQL工具進行訪問。

對性能的影響並不大,因為您可以使用聯接在單個選擇中一起獲取所有內容。

這要看一點。 每個實體的參數數量是否龐大? 如果不可能,第二個選擇是最好的。

如果您不想添加由延遲加載引起的額外查詢,則可以始終為可變數量的參數更改獲取類型,這些參數只會向您一直在執行的查詢添加一個聯接。 在正常情況下,付出的代價並不大。

同樣,第三個和第一個永遠禁止對參數進行任何類型的查詢。 我不願為未來付出巨大的技術債務。

直接將其保存為字符串並保存..

暫無
暫無

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

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