jpa vue管理系统_JPA数据库架构生成

jpa vue管理系统

jpa vue管理系统

一段时间以来, JPA的大多数主要实现,例如HibernateEclipseLinkOpenJPA ,都提供了生成数据库模式对象的方法。 这些包括表,主键,外键,索引和其他对象的生成。 不幸的是,当处理多个环境时,这些不是实现之间的标准。 仅在最新的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"?>
<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.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环境中的应用程序部署上执行。 为了进行开发,您可能需要在服务器重启时执行操作。

支持

WildflyGlassfish捆绑在一起的HibernateEclipseLink都支持这些属性。

OpenJPA当前不支持这些属性,但是我一直在为标准Schema Generation提供OpenJPA支持。 如果您好奇或想了解进度,请在此处查看我的Github存储库。 实际上,这是我写这篇文章的主要动机,因为我参与了该功能的实现。

希望您喜欢这个职位:)

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

jpa vue管理系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值