使用JPA保留第三方对象

时间:2010-02-21 16:01:18

标签: java jpa persistence

在我目前的项目中,我使用的是没有JPA注释的第三方库。

如何使用JPA和外部映射来保存该库中的对象?

3 个答案:

答案 0 :(得分:1)

参考JPA实施的文档;任何严肃的JPA实现都应提供使用XML和注释的示例。看到 http://www.datanucleus.org/products/accessplatform_2_0/jpa/metadata_xml.html 对于XML结构的DataNucleus文档,然后参考特定的关系类型以获取不同功能的示例。

答案 1 :(得分:1)

检查thisthis。简而言之:

  1. 创建META-INF/orm.xml
  2. 关注(阅读).xsd
  3. 您不必手动映射每列 - 只需要一些细节(即集合和ID)。假定所有字段都是列(如果映射了类)。如果没有集合,这样的东西就足够了:

    <?xml version="1.0" encoding="UTF-8" ?>
    <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
        http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
        version="1.0">
    
        <description>External entities from library X</description>
        <package>com.external.library</package>
        <entity class="SomeClassName">
          <id>..</id>
        </entity>
        <entity class="AnotherClassName">
          <id>..</id>
        </entity>
    </entity-mapping>
    

    请注意,在指定<package>时,您不需要完全限定名称。

    如果您想要一个名称与orm.xml不同的文件,请在persistence.xml中通过以下方式指定:

    <mapping-file>customMappingFile.xml</mapping-file>
    

答案 2 :(得分:1)

正如所指出的,您可以使用JPA mapping file代替注释来映射非注释实体(例如来自第三方库的类)。按照任何基于映射文件的JPA教程开始。

关于自动化,我认为你不能从对象模型中自动生成orm.xml(与物理模型相反,对象模型不包含足够的信息,例如哪个字段是PK或者,对于双向关联,哪一方是所有者等因此需要元数据)。但大多数IDE都为此提供支持,例如Eclipse