簡體   English   中英

Spring boot jpa 來自屬性文件的實體表名

[英]Spring boot jpa entity table name from property file

我們正在開發一個 spring 啟動庫來生成和驗證 OTP。 它使用數據庫來存儲 OTP。

我們使用 Spring 數據 JPA 進行數據庫操作,因為根據項目處理多個數據庫系統會很容易。

現在我們遇到了一個問題,我們的大多數項目都使用 Oracle 和單個數據庫。 在多個項目中使用相同的庫時會出現名稱沖突。 所以我們希望 OTP 表的名稱可以使用屬性文件進行配置。

我們嘗試@Table(name = "${otp-table-name}")但它不起作用。

我們做了很多研究,發現 hibernate 命名策略配置可以提供幫助。

但是我們不想在我們的庫中使用大量配置,因為我們需要該庫在項目中易於使用。

有人可以在這方面幫助我們嗎?

提前致謝。

您可以根據當前上下文動態確定實際數據源,使用 Spring 的AbstractRoutingDataSource class。您可以編寫自己的版本 class,並根據屬性文件將其配置為使用不同的數據源。

這允許您在數據庫或模式之間切換,而無需更改庫中的代碼。

參見: https://www.baeldung.com/spring-abstract-routing-data-source

使用NamingStrategy是一種好方法。

您可以讓它委托給現有的NamingStrategy並添加前綴。

使用特定於圖書館的默認前綴,但也允許圖書館的用戶指定替代前綴。

這樣你的庫就可以在沒有額外配置的情況下使用,但也可以處理多個應用程序在同一個數據庫模式中使用它的情況。

當然,這可能涉及有人在沒有意識到已經使用過的默認前綴的情況下使用的風險。 目前尚不清楚這種情況的后果是什么。 如果后果真的很糟糕,你應該放棄默認值並要求使用項目特定的前綴。 當沒有指定前綴時,會拋出一個異常,並顯示一條指示性錯誤消息,告訴用戶,即開發人員如何選擇前綴以及將前綴放在哪里。

暫無
暫無

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

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