Objektově relační tool pro Oracle
10g+
Objektově relační mapování v programovacím jazyce
Java na novém pricipu, jímž je pouze kompatibilita s
databázi Oracle, což umožňuje vytvořit komplexní API
při malém rozsahu implementace s maximálním využítí
prostředků databáze, resp. databáze Oracle 10g+.
Výhody tohoto systému by mohly být:
- oracle designed (současně i omezení)
- efektivní SQL dotazy do databáze (podobné jako
ručně psané) - cache-ování
- režimy pro konkureční zpracování (version
pattern, automatické lockování,..) - jednoduché a intuitivní API
- přehledná přímočará implementace umožňující
vlastní customizaci - jednoduchá konfigurace
- možnost validace všech query v aplikaci v testu
oproti XML definice - OpenSource licence
Čím bude dosaženo jednoduchosti a přitom
robustnosti systému? Jednoduchost bude zaručena tím,
že programátor nebude psát dotaz jako String-ové
query, ale pomocí API, které se bude mapovat jen na
Oracle SQL. Dotaz pak bude asi vypadat takto:
OMQuery query2 = OME.getObj(
OMFrom.def(O1.class,O2.class,query1),
OMCols.def(OMCols.ALL(O1.class,O2.class), query1.get(O3.ERROR), query1.get(O3.VISIBLE)),
OMCondJoin.def(
OMJ.def(O1.ID, OMJ.LEFT_JOIN, O2.FK),
OMJ.def(O2.ID, OMJ.JOIN, query1.get(O3.FK))),
OMCondValue.def(
OMC.def(O1.ID,OMC.op("="),OMC.val("X"))),
OMC.def(O1.ID,OMC.op("="),OMC.val("X")))));
Získání objektu/ů:
// one object
OMObject object = OME.getObject(query2);
// more objects
OMObject[] objects = OME.getCachedObjects(query2);
OMObject[] objects = OME.getAllObjects(query2);
// one concrete data object (equal to table row loaded from DB)
OMTable o1 = object.getOMTable(O1.class);
OMTable o2 = object.getOMTable(O2.class);
OMTable o3 = object.getOMTable(O3.class);
Modifikace objektu/tabulky:
PersonTable person = (PersonTable) o1;
if („Bin Ladin“.equals(person.getName() + „ “ + person.getSurname())) {
PersonProfileTable profile = (PersonProfileTable) o3;
profile.setVisible(false);
profile.setError(true);
query02.public();
} else {
query02.clean();
OME.rollbackConnection();
}
// in (try-)final section
OME.commitConnection();
Pro objekt profile
půjde update
vygenerovat snadno, protože při selectu engine sám
doplní id tabulky PersonProfileTable
podle XML definice.
Příklad konfigurace tabulky PersonProfileTable
:
<table>
<name>PersonProfileTable</name>
<cache>enable<cache/>
<cacheLoad>100K<cacheLoad/>
<cacheTimeOut>10M</cacheTimeOut>
<cachePriority>7<cachePriority/>
<concurrency>version</concurrency>
<primaryKey>
<column>
<columnName>ID</columnName>
<columnType>Integer</columnType>
</column>
</primaryKey>
<columns>
<column>
<columnName>visible</columnName>
<columnType>numberAsBoolean</columnType>
</column>
<column>
<columnName>error</columnName>
<columnType>numberAsBoolean</columnType>
</column>
</columns>
</table>