Oracle-magpie documentation


0. Main configuration file

<config>
   <data-source class="oracle.jdbc.pool.OracleDataSource"
      url="jdbc:oracle:thin:@127.0.0.1:1521:db102"
      user="bookstore" password="bookstore">
   </data-source>
   <mappings>
      <file name="./bin/resources/test-mappings.xml"/>
      <annotated-type class="ru.pan.magpie.mocks.Review" />
      <annotated-object class="ru.pan.magpie.proxies.PKG_TEST_MAPPINGS" />
   </mappings>
</config>



1. Type mappings

Entity class mapping

<class-mapping class="tutor.model.Customer" db-type="TCUSTOMER" owner="BOOKSTORE">
  <field name="customerId" db-name="customerId" />
  <field name="orders" db-name="orders"
    element-class="tutor.model.Order" collection-merging="update"/>
  <field name="registrationDate" db-name="registrationDate" />
  <property-group name="cuttedCustomer" behavior="skip" default="false">
    <property name="orders" group="cuttedOrder"/>
    <property name="customerId"/>
  </property-group>
</class-mapping>

Value class mapping


<value-mapping class="java.lang.Boolean">
      <sql-type name="NUMBER"
            to-oracle-method="ru.pan.magpie.convert.standards.NumberConversions.booleanToBigDecimal"
            from-oracle-method="ru.pan.magpie.convert.standards.NumberConversions.bigDecimalToBoolean" />
</value-mapping>

2. Predefined value type mappings table

The mappings defined in the default-mappings.xml configuration file
Java class SQL Data Type Notes

java.lang.String

CHAR, VARCHAR2, CHARACTER, STRING, VARCHAR, LONG, CLOB, ROWID

java.util.Date

DATE,TIMESTAMP

byte[]

BLOB

java.math.BigDecimal

PLS_INTEGER, BINARY_INTEGER, NATURAL, NATURALN, POSITIVE, POSITIVEN, NUMBER, DEC, DECIMAL, NUMERIC, FLOAT, INT, SMALLINT, INTEGER, REAL

java.math.BigInteger, byte, java.lang.Byte, java.lang.Short, short, int, java.lang.Integer, long, java.lang.Long, float, java.lang.Float, double, java.lang.Double

NUMBER

boolean, java.lang.Boolean

NUMBER

0-false, 1-true

int, java.lang.Integer

INTEGER, BINARY_INTEGER

long, java.lang.Long

INTEGER, LONG

float, java.lang.Float

BINARY_FLOAT

double, java.lang.Double

BINARY_DOUBLE



3. Interface mappings

<db-object object-is="package" class="tutor.proxies.PKG_BOOKS_API"
         name="PKG_BOOKS_API" owner="BOOKSTORE" base-class="">
    <procedure java-name="formatBookIsbns" db-name="formatBookIsbns"
        in-group="" out-group="">
    <return class="java.util.List" element-class="tutor.model.Customer" out-group=""/>
    <argument position="0" class="java.util.List" db-name="books"
        element-class="tutor.model.Book" collection-merging="reload"
        in-group="" out-group=""/>
    </procedure>
</db-object>

4. Using annotations


Instead of xml configuration files it is possible to define type and interface mappings by means of the java annotations. In the table below you can see correspondence of xml elements to annotations.

XML element Annotation

class-mapping

DBType

class-mapping.class

-

class-mapping.db-type

DBType.name()

class-mapping.owner

DBType.owner()

field

DBTypeField

field.name

-

field.db-name

DBTypeField.name()

field.element-class

DBTypeField.elementClass()

field.collection-merging

DBTypeField.collectionMerging()

property-group

-

value-mapping

-

db-object

DBObject

db-object.class

-

db-object.name

DBObject.name()

db-object.object-is

DBObject.type()

db-object.owner

DBObject.owner()

db-object.base-class

DBObject.baseClass()

procedure

DBProcedure

procedure.java-name

-

procedure.db-name

DBProcedure.name()

procedure.in-group

DBProcedure.inPropertyGroup()

procedure.out-group

DBProcedure.outPropertyGroup()

return

-

return.class

-

return.element-class

DBProcedure.returnElementClass()

return.out-group

DBProcedure.returnOutPropertyGroup()

argument

DBArgument

argument.position

-

argument.class

-

argument

DBArgument

argument.db-name

DBArgument.name()

argument.in-group

DBArgument.inPropertyGroup()

argument.out-group

DBArgument.outPropertyGroup()

argument.element-class

DBArgument.elementClass()

argument.collection-merging

DBArgument.collectionMerging()



5. Library API

Oracle-magpie JavaDoc API reference