首页 > Java > java教程 > JPA可以自动扫描@Entity注解的实体吗?

JPA可以自动扫描@Entity注解的实体吗?

Patricia Arquette
发布: 2024-12-04 15:06:14
原创
1002 人浏览过

Can JPA Automatically Scan for Entities Annotated with @Entity?

persistence.xml 中的自动实体扫描

在 Java Persistence API (JPA) 中,实体通常在 persistence.xml 部署描述符中声明使用 元素。但是,是否有一种机制可以自动扫描用@Entity注释的实体?

答案是肯定的,但有一定的条件和限制。

使用“jar-file” " 元素

persistence.xml 文件可以包含 元素来指​​定包含实体类的 JAR 文件。然后,JPA 提供程序将扫描指定的 JAR 文件中的实体。这是在 JPA 规范中定义的,并且受到大多数 JPA 提供程序(包括 Hibernate)的支持。

示例:

<persistence>
    <persistence-unit name="eventractor" transaction-type="RESOURCE_LOCAL">
        <jar-file>MyEventractor.jar</jar-file>
        <!-- Explicit listing of entity classes is still allowed -->
        <class>pl.michalmech.eventractor.domain.User</class>
        <class>pl.michalmech.eventractor.domain.Address</class>
        <class>pl.michalmech.eventractor.domain.City</class>
        <class>pl.michalmech.eventractor.domain.Country</class>

        <properties>
            <property name="hibernate.hbm2ddl.auto" value="validate" />
            <property name="hibernate.show_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>
登录后复制

Hibernate 特定的自动检测(Java SE)

特别是在 Hibernate 中,即使 JPA规范并不要求它,即使在 Java SE 应用程序中也支持实体的自动检测。要启用此功能,请将以下属性添加到持久性单元:

<property name="hibernate.archive.autodetection" value="class, hbm" />
登录后复制

这允许 Hibernate 扫描使用 @Entity 注释的类以及由指定的 JAR 文件中的 Hibernate 映射文件 (.hbm.xml)

限制

需要注意的是,依赖自动实体扫描可能并不总是最佳实践。在类路径可见性是动态的或存在多个实体定义冲突的模块的情况下,显式类列表可以提供更好的控制。

以上是JPA可以自动扫描@Entity注解的实体吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板