Follow Us on Twitter

TopLink - implementatie en ondersteuning in JDeveloper

Gepubliceerd in

Januari 2004 - Toplink - de nieuwe tool van Oracle om object georienteerde modelgegevens persistent op te slaan in de database - is nu volledig geintegreerd in de ontwikkel- en productieomgeving van Oracle. In onze Whitebook van februari 2003 beschreven we dat het tool gebruikt kan worden voor mapping van objecten via JDBC op tabellen in verschillende relationele databases. In dit Whitebook gaan we in op de implementatie en de ondersteuning die JDeveloper hiervoor biedt.

Toplink

Toplink is een java library met classes en methoden die je in een java programma kunt aanroepen om objectgegevens te lezen of op te slaan in een relationele database.

Informatie over welke objectgegevens naar welke tabellen geschreven moeten worden en op welke manier wordt vastgelegd in een xml configuratie file. In de configuratie file staat informatie over de java classes in de applicatie (descriptors), de overeenkomende databasetabellen en attributen (mappings) en de manier van connecteren en omgaan met de database (session).

In de runtime java applicatie wordt een toplink project object gemaakt, die de configuratie file inleest. Met dit project maak je een database session object aan waarvan de login methode een connectie met de database legt.

Om gegevens uit de database te lezen roep je methode readAllObjects() aan met de gewenste java class als parameter. De gegevens worden in de database opgezocht volgens de vastgelegde mappings en in een vector met de betreffende objecten in de applicatie bekend gemaakt.

Het is ook mogelijk een selectie te maken van de objecten in de database. Hiervoor maak je een expression builder object aan. Deze heeft een methode waaraan je query argumenten kunt meegeven en die een expressie object teruggeeft. Dit expressie object gebruik je in de readObject methode om de gewenste objecten te selecteren. Toplink zorgt ervoor dat alleen deze objecten uit de database gelezen worden.

Gegevens schrijven naar de database gaat naar analogie van lezen met writeObjects(). Het wordt echter afgeraden deze methode te gebruiken aangezien deze niet transactioneel is. De class UnitOfWork voorziet hier wel in. Je registreert de te wijzigen objecten in je applicatie bij dit object waarna je een kopie van deze objecten terugkrijgt. Hierop kun je de wijzigingen doorvoeren. Daarna geef je de UnitOf Work opdracht de wijzigingen op te slaan. De UnitOf Work zorgt voor een consistente manipulatie van de database met eventueel een rollback als er fouten optreden. Na de commit liggen de gegevens vast in de database en worden de actuele objecten in de applicatie van de nieuwe gegevens voorzien.

JDeveloper

In JDeveloper zijn op eenvoudige wijze bovengenoemde zaken te implementeren. In een project kan een nieuwe deployment descriptor voor Toplink aangemaakt worden, waarna je beschikking hebt over de verschillende mapping tools. Tabellen in de database worden als off-line tables gerepresenteerd. De objecten worden met de tools gemapped naar deze off-line tabellen. Na het genereren van de ‘toplink-deployment-descriptor.xml’, waarin in naast de mappings ook sessie informatie is opgenomen kan een applicatie door het aanmaken van een toplink project object op bovengenoemde wijze gebruik maken van de Toplink functionaliteit.

In de help-functionaliteit van JDeveloper is een tutorial opgenomen die je stap voor stap door het aanmaken en gebruik van een Toplink project leidt. De voorbeeld classes en tabellen zijn standaard in de JDeveloper installatie opgenomen.

Best Practices

Toplink biedt de mogelijkheid objecten te gebruiken om tabeldefinities te genereren en andersom. Geen van beide manieren leidt echter tot een optimaal resultaat. Aanbevolen wordt een object-modeller en een database architect onafhankelijk hun werk te laten doen. Hierna worden in overleg aan beide zijden aanpassingen gedaan om tot een optimale interactie tussen model en database te komen.

Een mapping tool staat of valt met de performance die het kan bieden. Toplink staat bekend als een tool dat op dit vlak zeer goed scoort, ook bij zware belasting. Oracle heeft alle aandacht besteed om het product optimaal in Oracle9iAS te integreren.
Een vuistregel is dat de preformance kosten van een berekening in een JVM, een aanroep van een EJB en een rondje naar de database schaalt als 1:10:100. Bezuinigen op database roundtrips kan dus verreweg de meeste performance winst opleveren. Toplink biedt verschillende mogelijkheden om dit te beïnvloeden. Hierover een andere keer meer.

Waardering:
 

Reacties

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.