日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

JPA数据库架构生成

發布時間:2023/12/3 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JPA数据库架构生成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一段時間以來, JPA的大多數主要實現,例如Hibernate , EclipseLink或OpenJPA ,都提供了生成數據庫模式對象的方法。 這些包括表,主鍵,外鍵,索引和其他對象的生成。 不幸的是,當處理多個環境時,這些不是實現之間的標準。 僅在最新的JPA 2.1規范中,才引入了Schema Generation標準化。

從現在開始,如果您使用的是Java EE 7 ,則不必擔心提供程序之間的差異。 只需使用新的標準屬性即可。 當然,您可能會認為根本不需要這些,因為不應像這樣管理環境的數據庫架構。 盡管如此,這些對于開發或測試目的還是非常有用的。

模式生成

特性:

如果希望對模式生成使用新的標準,只需將以下任何屬性添加到persistence.xml properties部分:

屬性 價值觀
javax.persistence.schema-generation.database.action

指定對數據庫架構要采取的措施。 可能的值不言自明。 如果此屬性不是特定的,則不會在數據庫中執行任何操作。

無,創建,拖放,創建,刪除
javax.persistence.schema-generation.create-source

指定應如何創建數據庫模式。 可以僅通過使用在應用程序實體中指定的注釋元數據,通過執行SQL腳本或兩者的組合來實現。 您還可以定義順序。 無需指定此屬性即可生成架構。 默認值為元數據 。 如果結合使用create動作,則需要小心。 結果操作可能會在數據庫架構中生成意外行為并導致失敗。

元數據,腳本,元數據高于腳本,腳本然后元數據
javax.persistence.schema-generation.drop-source

與javax.persistence.schema-generation.create-source相同 ,但用于放置動作。

元數據,腳本,元數據高于腳本,腳本然后元數據
javax.persistence.schema-generation.create-script-source,javax.persistence.schema-generation.drop-script-source

指定要在創建或刪除數據庫模式時執行的SQL腳本文件的目標位置。

要執行的文件URL的字符串
javax.persistence.sql-load-script-source

指定SQL文件的目標位置,以將數據加載到數據庫中。

要執行的文件URL的字符串


此外,還可以使用“模式生成”操作來生成SQL腳本:

屬性 價值觀
javax.persistence.schema-generation.scripts.action

指定應生成的SQL腳本。 僅當指定了相應的生成位置目標時,才生成腳本。

無,創建,拖放,創建,刪除
javax.persistence.schema-generation.scripts.create-target,javax.persistence.schema-generation.scripts.drop-target

指定生成SQL腳本文件以創建或刪除數據庫模式的目標位置。

要執行的文件URL的字符串

樣品

以下示例刪除并創建JPA應用程序所需的數據庫模式對象。 依賴于實體的注釋元數據,還執行一個名為load.sql的任意SQL文件。

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"><persistence-unit name="MyPU" transaction-type="JTA"><properties><property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/><property name="javax.persistence.schema-generation.create-source" value="metadata"/> <property name="javax.persistence.schema-generation.drop-source" value="metadata"/> <property name="javax.persistence.sql-load-script-source" value="META-INF/load.sql"/> </properties></persistence-unit> </persistence>

另一個示例將生成要創建的數據庫架構對象,并將其放置在目標位置:

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> <persistenceversion="2.1"xmlns="http://xmlns.jcp.org/xml/ns/persistence"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"><persistence-unit name="MyPU" transaction-type="JTA"><properties><property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/><property name="javax.persistence.schema-generation.scripts.create-target" value="file:/tmp/create.sql"/><property name="javax.persistence.schema-generation.scripts.drop-target" value="file:/tmp/drop.sql"/></properties></persistence-unit> </persistence>

這兩個示例也可以組合在一起以刪除和創建數據庫對象,并生成執行這些操作的相應腳本。 您可以在Github上托管的Java EE Samples項目中找到這些示例和其他示例。

局限性

如前所述,建議您僅將這些屬性用于開發或測試目的。 錯誤的設置可能會輕易破壞或破壞您的生產數據庫。

沒有更新或驗證架構的操作。 我找不到他們未將其納入規范的原因,但這是改進建議的問題 。

數據庫模式操作僅在Java EE環境中的應用程序部署上執行。 為了進行開發,您可能希望在服務器重啟時執行操作。

支持

與Wildfly和Glassfish捆綁在一起的Hibernate和EclipseLink都支持這些屬性。

OpenJPA當前不支持這些屬性,但是我一直在為標準Schema Generation提供OpenJPA支持。 如果您好奇或想了解進度,請在此處查看我的Github存儲庫。 實際上,這是我寫這篇文章的主要動機,因為我參與了該功能的實現。

希望您喜歡這個職位:)

翻譯自: https://www.javacodegeeks.com/2015/03/jpa-database-schema-generation.html

總結

以上是生活随笔為你收集整理的JPA数据库架构生成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。