Generování tříd implementace s pomocí konfiguračních souborů XML

Při generování implementace nějakého rozhraní můžete pomocí souboru XML přepsat anotace SQL v daném rozhraní. Soubor XML může také přepsat definici odpovídajícího objektu pureQuery bean. Pracovní prostředí vám může generovat soubor XML a vy jej můžete upravit.

Ke generování implementace nějakého rozhraní pracovní prostředí spustí generátor pureQuery. Generující program vám umožní zadat soubor XML, ve kterém můžete přepsat příkazy SQL obsažené v anotacích metod deklarovaných rozhraním.

Typy, prvky a atributy, které generující program rozpozná při analýze konfiguračního souboru XML, představují dílčí sadu formální specifikace rozhraní Java Persistence API (JPA).

Pro každý projekt existuje pouze jeden konfigurační soubor. Po vytvoření souboru XML v rámci projektu budou všechna následná přepsání vytvořená pro rozhraní či objekty bean v tomto projektu připojena do tohoto souboru.

Postup:

Chcete-li generovat třídu implementace s pomocí konfiguračního souboru XML, postupujte takto:

  1. Generování XML, který můžete upravit za účelem přepsání příkazů SQL v anotacích deklarovaných rozhraním:
    1. Otevřete rozhraní v editoru Java.
    2. Klepněte pravým tlačítkem myši a vyberte možnosti Asistent pureQuery > Generovat XML.
      • Pokud v projektu dosud neexistuje konfigurační soubor, otevře se okno Generovat XML pro třídu Java. Můžete potvrdit výchozí název souboru, nebo jej změnit.
      • Pokud v projektu již existuje konfigurační soubor XML, bude kód XML připojen do tohoto souboru.
  2. Generování XML, který můžete upravit za účelem přepsání definice objektu pureQuery bean odpovídajícího rozhraní:
    1. Otevřete objekt bean v editoru Java.
    2. Klepněte pravým tlačítkem myši a vyberte možnosti Asistent pureQuery > Generovat XML.
      • Pokud v projektu dosud neexistuje konfigurační soubor, otevře se okno Generovat XML pro třídu Java. Můžete potvrdit výchozí název souboru, nebo jej změnit.
      • Pokud v projektu již existuje konfigurační soubor XML, bude kód XML připojen do tohoto souboru.
  3. Opakujte kroky jedna a dvě pro všechna rozhraní či objekty pureQuery bean, které chcete přepsat.
  4. Upravte konfigurační soubor XML.
  5. Odstraňte implementace rozhraní, které chcete znovu vygenerovat.
  6. Vyberte možnosti Projekt > Vyčistit a určete, že má být projekt vyčištěn. Implementace budou znovu vygenerovány na základě voleb v souboru XML.
Konfigurační soubor XML pro projekt je umístěn ve složce meta-inf. Po vygenerování souboru XML nebo přidání obsahu do tohoto souboru jej můžete poklepáním otevřít v editoru XML.

Příklad

Předpokládejme, že jste vytvořili projekt Java a přidali do něj jeden objekt pureQuery bean, rozhraní a implementaci tohoto rozhraní, to vše založené na tabulce ACT databáze SAMPLE pro systém DB2 for Linux, UNIX, and Windows. Odstraníte implementaci, protože ji chcete znovu vygenerovat po přepsání rozhraní a objektu bean konfiguračním souborem XML. Projekt vypadá takto:

Obsah projektu Java „MyProject“

Poklepáním otevřete rozhraní ActData.java v editoru Java. Poté klepněte pravým tlačítkem myši a vyberte možnosti Asistent pureQuery > Generovat XML. Jelikož v projektu zatím neexistuje žádný soubor XML, musíte určit název souboru. V okně Generovat XML pro třídu Java pojmenujte soubor MyProject.xml a klepněte na tlačítko Dokončit. soubor se zobrazí ve složce meta-inf projektu.

Obsah téhož projektu Java, nyní se souborem XML

Poklepáním na soubor XML jej otevřete v editoru XML. Zde je uveden obsah tohoto souboru bez informací oboru názvů:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings>
  <named-native-query name="MyPackage.ActData#getActs()">
    <query><![CDATA[select ACTNO, ACTKWD, ACTDESC from ACT]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#getAct(int)">
    <query><![CDATA[select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = ?]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#getAct(Act)">
    <query><![CDATA[select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = :actno]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#createAct(int, String, String)">
    <query><![CDATA[insert into ACT (ACTNO, ACTKWD, ACTDESC) values( ?, ?, ?)]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#createAct(Act)">
    <query><![CDATA[insert into ACT (ACTNO, ACTKWD, ACTDESC) values( :actno, :actkwd, :actdesc)]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#updateAct(int, String, String, int)">
    <query><![CDATA[update ACT set ACTNO = ?, ACTKWD = ?, ACTDESC = ? where ACTNO = ?]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#updateAct(Act)">
    <query><![CDATA[update ACT set ACTNO = :actno, ACTKWD = :actkwd, ACTDESC = :actdesc where ACTNO = :actno]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#deleteAct(int)">
    <query><![CDATA[delete from ACT where ACTNO = ?]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#deleteAct(Act)">
    <query><![CDATA[delete from ACT where ACTNO = :actno]]></query>
  </named-native-query>
</entity-mappings>

Soubor obsahuje příkazy SQL v anotaci metod definovaných rozhraním.

Poklepáním otevřete objekt pureQuery bean, Act.java, v editoru Java. Klepněte pravým tlačítkem myši a vyberte možnosti Asistent pureQuery > Generovat XML. Jelikož soubor již existuje, okno Generovat XML pro třídu Java se již neotevře. Pracovní prostředí jednoduše přidá kód XML do existujícího konfiguračního souboru XML.

Pokud se vrátíte zpět do konfiguračního souboru XML, bude vypadat takto - opět bez informací oboru názvů:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings>
  <named-native-query name="MyPackage.ActData#getActs()">
    <query><![CDATA[select ACTNO, ACTKWD, ACTDESC from ACT]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#getAct(int)">
    <query><![CDATA[select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = ?]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#getAct(Act)">
    <query><![CDATA[select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = :actno]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#createAct(int, String, String)">
    <query><![CDATA[insert into ACT (ACTNO, ACTKWD, ACTDESC) values( ?, ?, ?)]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#createAct(Act)">
    <query><![CDATA[insert into ACT (ACTNO, ACTKWD, ACTDESC) values( :actno, :actkwd, :actdesc)]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#updateAct(int, String, String, int)">
    <query><![CDATA[update ACT set ACTNO = ?, ACTKWD = ?, ACTDESC = ? where ACTNO = ?]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#updateAct(Act)">
    <query><![CDATA[update ACT set ACTNO = :actno, ACTKWD = :actkwd, ACTDESC = :actdesc where ACTNO = :actno]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#deleteAct(int)">
    <query><![CDATA[delete from ACT where ACTNO = ?]]></query>
  </named-native-query>
  <named-native-query name="MyPackage.ActData#deleteAct(Act)">
    <query><![CDATA[delete from ACT where ACTNO = :actno]]></query>
  </named-native-query>
   <entity class="MyPackage.Act">
    <attributes>
     <id name="ACTNO">
      <column name="actno"/>
      <generated-value/>
     </id>
     <basic name="ACTNO">
      <column name="actno"/>
     </basic>
     <basic name="ACTDESC">
      <column name="actdesc"/>
     </basic>
     <basic name="ACTKWD">
      <column name="actkwd"/>
     </basic>
    </attributes>
  </entity>
<entity-mappings>
Související pojmy
Generování kódu pureQuery z databázových objektů
Související úlohy
Generování kódu pureQuery z objektů bean
Generování objektů pureQuery bean pro zachycení výsledných sad z příkazů SQL SELECT
Vytváření šablon JET (Java Emitter Templates) technologie EMFT (Eclipse Modeling Framework Technologies) pro generování přizpůsobeného kódu
Vývoj aplikací pureQuery pomocí pracovního prostředí
Související informace
Použití konfiguračního souboru XML pro generátor pureQuery

Váš názor