Red Hat Training

A Red Hat training course is available for Red Hat JBoss Web Server

6.3. XML 定義

JPA 仕様では、JPA 配備記述子を使用してアノテーションオーバーライドを行えます。役に立つ追加機能であるデフォルトのイベントリスナーも存在します。
<?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 orm_1_0.xsd"
                 version="1.0"
        >
    <persistence-unit-metadata>
        <persistence-unit-defaults>
            <entity-listeners>
                <entity-listener class="org.hibernate.ejb.test.pack.defaultpar.IncrementListener">
                    <pre-persist method-name="increment"/>
                </entity-listener>
            </entity-listeners>
        </persistence-unit-defaults>
    </persistence-unit-metadata>
    <package>org.hibernate.ejb.test.pack.defaultpar</package>
    <entity class="ApplicationServer">
        <entity-listeners>
            <entity-listener class="OtherIncrementListener">
                <pre-persist method-name="increment"/>
            </entity-listener>
        </entity-listeners>


        <pre-persist method-name="calculate"/>
    </entity>
</entity-mappings>
該当するエンティティのエンティティリスナーをオーバーライドできます。エンティティリスナーは該当するクラスに対応し、1 つまたは複数のイベントにより該当するメソッドコールが呼び出されます。また、コールバックを定義するためにエンティティ自体に対するイベントを定義することもできます。
該当する永続化単位のマップされたすべてのエンティティのエンティティリスナースタック上で最初に適用するデフォルトのエンティティリスナーを定義できます。エンティティがデフォルトリスナーを継承しないようにする場合は、@ExcludeDefaultListeners (または、<exclude-default-listeners/>) を使用できます。