我需要在我的 SQL 資料庫中索引一列。有一種方法可以使用 SQL 查詢在特定列上創建索引
CREATE INDEX index_name
ON table_name (column1, column2, ...);
我在互聯網上找到的另一種方法是在 JPA 中使用類似的東西
@Table(indexes = @Index(columnList = "firstName"))
兩者有什么區別嗎?如果在現實世界中遵循 JPA 方法,它不會在每次部署專案時嘗試創建索引嗎?
uj5u.com熱心網友回復:
簡短的回答
使用 SQL 來創建/更新模式,因為它在未來的遷移中提供了更大的靈活性和可維護性,并且不易出錯。
長答案:
的@Index注釋是采用由模式生成處理來自動創建資料庫模式的元資料。
“如果在現實世界中遵循 JPA 方法,它不會在每次部署專案時嘗試創建索引嗎?”
是的,它每次都會嘗試創建索引并更新架構。這在非生產中很方便,但在生產中是不好的做法。
uj5u.com熱心網友回復:
對于不同的資料庫索引創建,SQL 查詢可能會有所不同,因此這些 SQL 查詢將依賴于資料庫。對于不同的資料庫,您可能需要撰寫不同的 SQL 查詢。而@Index 特定于 JPA 并且獨立于資料庫。相同的@Index 可用于在不同的資料庫中創建索引。
@Index 將僅在模式生成時執行其作業。在專案中,我們可以指定模式生成屬性spring.jpa.hibernate.ddl-auto,并將update其設定為用于更新模式或none在生產中。
spring.jpa.hibernate.ddl-auto = update
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/408033.html
標籤:
上一篇:我無法使用JPAspringboot通過電子郵件搜索我的用戶
下一篇:如何修復無法延遲初始化集合
