В моем текущем проекте я пользуюсь сторонней библиотекой, которая не имеет никаких аннотаций JPA.
Как я могу сохранить объекты из той библиотеки с помощью JPA и внешних отображений?
META-INF/orm.xml
.xsd
Вам не нужно вручную сопоставлять каждый столбец - требуются только некоторые специфические характеристики (т.е. коллекции и 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>
Обратите внимание, что при указании
вам не нужны полные имена.
В случае, если вам нужен файл, названный иначе, чем orm.xml
, в вашем persistence.xml
укажите его через:
<mapping-file>customMappingFile.xml</mapping-file>
Обратитесь к документации вашей реализации JPA; любая серьезная реализация JPA должна предоставлять примеры использования XML, а также аннотаций. См. http://www.datanucleus.org/products/accessplatform_2_0/jpa/metadata_xml.html для документации DataNucleus по структуре XML, а затем обратитесь к конкретным типам отношений для примеров различных возможностей.
Как уже указывалось, вы можете использовать файл сопоставления JPA вместо аннотаций для сопоставления, ну, не аннотированных объектов (например, классов из сторонняя библиотека). Для начала следуйте любому руководству JPA, основанному на файлах сопоставления.
Что касается автоматизации, я не думаю, что вы можете автоматизировать создание orm.xml
из объектной модели (в отличие от физической модели, объектная модель не содержит достаточно информации, например какое поле является PK или, для двунаправленной ассоциации, какая сторона является владельцем и т. д., следовательно, необходимы метаданные). Но большинство IDE поддерживают это, например Затмение .