在Spring JPA中,我们如何像ibatis那样查询XML文件或bean.xml?

时间:2019-06-12 06:24:18

标签: spring-boot jpa spring-data-jpa

我有一个用例,我希望我的应用程序具有更多的属性驱动和可配置性,以便数据库列名称的任何更改都不会影响相同。 因此,在Spring JPA中,我们如何像ibatis一样查询XML文件或bean.xml?

1 个答案:

答案 0 :(得分:2)

JPA可以使用XML来代替注释。

默认文件名为orm.xml,如果将此文件添加到META-INF目录,Spring Data JPA将默认加载它。

您还可以使用属性指定文件:

spring.jpa.orm=orm.xml

orm.xml具有与注释相同的功能。

这里是一个例子:

<?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm
                                     http://xmlns.jcp.org/xml/ns/persistence/orm_2_0.xsd" version="2.1">

    <!-- JPA Named Native Queries -->
    <named-native-query name="Book.findAll" result-class="com.memorynotfound.hibernate.Book">
        <query>SELECT * FROM Book</query>
    </named-native-query>
    <named-native-query name="Book.findById" result-class="com.memorynotfound.hibernate.Book">
        <query>SELECT * FROM Book WHERE id = :id</query>
    </named-native-query>

    <!-- entity mapping -->
    <entity class="com.memorynotfound.hibernate.Book">
        <attributes>
            <basic name="title"/>
        </attributes>
    </entity>

</entity-mappings>

在Hibernate官方文档中找到有关XML映射的更多信息:

https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#bootstrap-jpa-xml-files