Okee, 't is weer tijd voor mijn wekelijkse bijdrage.. 
Voor mijn werk ben ik met een distributed Java systeem bezig (vooralsnog is het enkel nog een simpel probeerseltje, hopelijk wordt later besloten dat ik met een echte uitwerking bezig mag
) en ik denk er over om weer BC4J (Business Components for Java van Oracle) te gebruiken om met de database te babbelen. 'Weer', omdat ik bij mijn vorige werkgever ook al eens met BC4J had gewerkt. 
Ten eerste was ik nu wel eens benieuwd naar hoe wijd verspreid dit leuke stukje techniek nu wel niet is. Dus, zijn er nog anderen die hier wel eens mee werken/hebben gewerkt? En wat is jullie mening dan over BC4J?
* Tuinhark [lang verhaal volgt...]
Ik zal natuurlijk even verklaren hoe ik hier nu zo bij ben gekomen...
Bij mijn vorige werkgever heb ik dus al eens eerder BC4J toegepast. Alleen, omdat ik er toen voor het eerst mee in aanraking kwam (én met JDeveloper, een 'vereiste' voor BC4J), kon ik er uiteraard nog niet zo heel goed mee uit de voeten. Op het eerste gezicht leken de gegenereerde BC4J componenten (classes) mij dan ook nog niet ideaal. (Kom ik zo op terug.)
Zodoende had ik een zootje interfaces + implementatie classes (voor scheiding in multi-tiers) gemaakt die zo goed als 1-op-1 gemapt konden worden naar het oorspronkelijke ERD van de database. Ik zal deze oplossing nu met 'dataproviders' aanduiden.
Dit waren encapsulators voor de gegenereerde BC4J classes.
Dus, deze dataproviders zijn dus een mapping van het ERD (logisch), terwijl BC4J voornamelijk een mapping is van de tabellenstructuur (technisch).
Even een concreet verschil dan: Met BC4J is het wel mogelijk om op een entity object (een voorstelling van een row uit een tabel) volledig getypeert de 'attributen' (waarden) op te halen. Maar collecties kun je er weer niet mee ophalen. Dus dat je bijvoorbeeld een entity object hebt (een useraccount) en dat je vervolgens alle post entities in een Enumeration of whatever ophaalt (posts van die user op een forum oid
).
Daarom hadden we (werkte met een klasgenoot samen aan dat project
) dat systeem van die dataproviders bedacht. Op die manier konden we in die interfaces precies opgeven welke relaties er mogelijk waren (op code nivo). Nogmaals, de implementatieclasses van de dataproviders waren wrappers om BC4J View objecten heen. Zodoende hadden we niets meer van doen met de Entity objecten (en View objecten
).
Goed, nu ik met een nieuw project bezig ben/ga, zit ik me nog eens te verdiepen in BC4J. Ik ben uiteraard al een gazillion things tegengekomen die ik nu anders zou doen als ik weer met het eerste project bezig zou zijn...
Maar verder, ik wilde toch eens verder kijken of het niet mogelijk was om deze dataproviders aan de kant te schuiven en direct op de gegenereerde BC4J componenten te opereren, terwijl ik toch de functionaliteit die ik wil kan behouden (zie boven). Het was namelijk een mottige klus om al die classes + interfaces te schrijven...
En bovendien, wanneer je de tabellen aanpast, kun je de BC4J componenten opnieuw genereren. Deze dataproviders moeten daarna alsnog met de hand worden aangepast. 
Dusssss... Voor díegenen die me tot nu toe nog hebben kunnen volgen: als je nog tips/opmerkingen hierover hebt.. Ik houd me aanbevolen.
Bij Google valt trouwens vrij weinig te vinden over BC4J (gepaste voorbeeldjes e.d. bedoel ik) en in de search is er welgeteld toch nog 1 topic te vinden ([rml][ J2EE] Oracle JDeveloper[/rml]); interessante discussie, maar niet wat ik zoek.
(En helaas, d'r verder geen expertise in huis die mij verder zou kunnen helpen.
'k Ben de eerste met uitgebreide *kuch* Java kennis.
)
Voor mijn werk ben ik met een distributed Java systeem bezig (vooralsnog is het enkel nog een simpel probeerseltje, hopelijk wordt later besloten dat ik met een echte uitwerking bezig mag
Ten eerste was ik nu wel eens benieuwd naar hoe wijd verspreid dit leuke stukje techniek nu wel niet is. Dus, zijn er nog anderen die hier wel eens mee werken/hebben gewerkt? En wat is jullie mening dan over BC4J?
* Tuinhark [lang verhaal volgt...]
Ik zal natuurlijk even verklaren hoe ik hier nu zo bij ben gekomen...
Bij mijn vorige werkgever heb ik dus al eens eerder BC4J toegepast. Alleen, omdat ik er toen voor het eerst mee in aanraking kwam (én met JDeveloper, een 'vereiste' voor BC4J), kon ik er uiteraard nog niet zo heel goed mee uit de voeten. Op het eerste gezicht leken de gegenereerde BC4J componenten (classes) mij dan ook nog niet ideaal. (Kom ik zo op terug.)
Zodoende had ik een zootje interfaces + implementatie classes (voor scheiding in multi-tiers) gemaakt die zo goed als 1-op-1 gemapt konden worden naar het oorspronkelijke ERD van de database. Ik zal deze oplossing nu met 'dataproviders' aanduiden.
Dus, deze dataproviders zijn dus een mapping van het ERD (logisch), terwijl BC4J voornamelijk een mapping is van de tabellenstructuur (technisch).
Even een concreet verschil dan: Met BC4J is het wel mogelijk om op een entity object (een voorstelling van een row uit een tabel) volledig getypeert de 'attributen' (waarden) op te halen. Maar collecties kun je er weer niet mee ophalen. Dus dat je bijvoorbeeld een entity object hebt (een useraccount) en dat je vervolgens alle post entities in een Enumeration of whatever ophaalt (posts van die user op een forum oid
Daarom hadden we (werkte met een klasgenoot samen aan dat project
Goed, nu ik met een nieuw project bezig ben/ga, zit ik me nog eens te verdiepen in BC4J. Ik ben uiteraard al een gazillion things tegengekomen die ik nu anders zou doen als ik weer met het eerste project bezig zou zijn...
Dusssss... Voor díegenen die me tot nu toe nog hebben kunnen volgen: als je nog tips/opmerkingen hierover hebt.. Ik houd me aanbevolen.
Bij Google valt trouwens vrij weinig te vinden over BC4J (gepaste voorbeeldjes e.d. bedoel ik) en in de search is er welgeteld toch nog 1 topic te vinden ([rml][ J2EE] Oracle JDeveloper[/rml]); interessante discussie, maar niet wat ik zoek.
(En helaas, d'r verder geen expertise in huis die mij verder zou kunnen helpen.