[alg] Relationele db naar object framework

Pagina: 1
Acties:
  • 152 views sinds 30-01-2008
  • Reageer

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
Ok momenteel wordt een enterprise applicatie gevoed door een relationele db. Graag zou ik eens wat experimenteren met een object framework wat dus objecten aanmaakt en vult met data uit de db. Heeft iemand hier ervaringen mee? Of referentie materiaal? In google kon ik nagenoeg weinig concreets vinden over de daadwerkelijke implementatie mogelijkheden van een dergelijke opzet.

Het is de bedoeling dat top-level coders dus gewoon objecten gebruiken zonder verder weet te hebben van de dataopslag in de db.

bvd!

Verwijderd

Moet ik hierbij denken aan bijvoorbeeld Enterprise Java Beans?

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
Ja's ongeveer wel in de richting...maar niet precies wat ik bedoel. Ben ook niet zo thuis in Java technieken. Ik stel bovenstaande vraag binnen de context van .NET gerelateerde techniek.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik ben op dit moment aan het kijken naar OJB (ook java). Dit is een tool die een databinding framework genereerd op basis van een OR-mapping bestand. Op de site staat ook een leuk (algemene) uitleg hoe OR mapping in elkaar steekt. Misschien zou je eens naar die laatste link kunnen kijken voor een indruk.

Verwijderd

Tja ... ik ben er van overtuigd dat er ontzettend veel nuttige, gestandaardiseerde object georienteerde dataabstractielagen zijn. Zelf ben ik er echter van overtuigd dat geen enkele van die oplossing een 'silver bullet' is. In veel situaties is het beter om zelf een object-hierarchie voor de specifieke situatie van de te bouwen applicatie te ontwerpen. Daarin zal je zelf een onderscheid moeten maken tussen 'business rules', 'data objects' en 'user inferface actions'. Als je de interfaces echter duidelijk omschrijft kunnen die lagen onafhankelijk van elkaar gebouwd worden.

Otis heeft overigens een data-tier generatie tool geschreven voor .Net die misschien een deel van jouw oplossing kan zijn.

HTH :)
edit:

Hmmm ... kennelijk begrijp ik het dan inderdaad niet :?

[ Voor 0% gewijzigd door Verwijderd op 23-09-2002 18:58 . Reden: Reactie op reactie ]


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
MrX:

Wij begrijpen elkaar niet. Ik ben op zoek naar de mogelijkheid om een relationele db te mappen naar een objecten framework. Jij praat over n-tier (MS DNA) concepten om de applicatie logica te scheiden in fysieke lagen. Otis zijn LLBLGen is mij bekent en heeft een heel ander doel, namelijk het verzorgen van de Data Access laag. Ik ben dus op zoek naar ietes geheel anders.

Verwijderd

kijk eens goed naar ADO.NET, en je bent er!

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Verwijderd schreef op 23 september 2002 @ 18:58:
kijk eens goed naar ADO.NET, en je bent er!


Ik denk niet dat paulgielens dat bedoeld (en ik vermoed ook dat paulgielens ADO.NET wel al eens aandachtig bekeken heeft). ;)

Hij wil een framework ontwikkelen dat zich bezighoud met database-toegang en de 'business-logic' classes zeg maar gebruiken dan de classes uit dat framework om de data op te halen en te persisten zonder dat die classes dus weet moeten hebben van de interne structuur van de DB. (Althans, zo heb ik het begrepen).

https://fgheysels.github.io/


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 15:34

mulder

ik spuug op het trottoir

En dat is dan toch wat LLBLGen (met misschien enkele modificaties) doet?

oogjes open, snaveltjes dicht


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
Binnen zeer korte tijd (deze week) verschijnt er een O/R mapper voor .NET van Thomas Tomiczek. Hou http://www.thona-consulting.com/entityobjectbroker.aspx in de gaten hiervoor, of check anders de announcements op http://www.asp.net/Forums/.

Cuyahoga .NET website framework


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
tijn, whoami, dank u :)

TheMask, Don Facundo:
Whoami verwoord het goed. Nu snap ik ff niet wat precies niet duidelijk is aan mijn vraag. Ik wil relationele data mappen naar objecten. Concreet is dat dus van een tabel Persoon een Persoon object maken. Zodra het framework start zijn deze objecten een in memory replica van de data alleen dan als objecten gepresenteerd. Het framework maakt de data opslag dus transparant voor de ontwikkelaars. Tevens zijn objecten veel beter te controleren dan met rel data zeulen. Het is dus VEEL MEER dan een DAL laagje voor je business logica.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 15:34

mulder

ik spuug op het trottoir

Ik snap niet echt wat je precies nou extra wilt. Ik ben een behoorlijk groentje op dit gebied, maar werk nu toch zo'n 3 maanden met iets wat jij beschrijft. Daarom dacht ik ook aan LLBLGen, want ik denk dat jij iets dergelijks zoekt, maar misschien met een betere splitsing tussen Business Logic en DAL. Daarom zou je op LLBLGen (is het enige wat ik ken die dit doet, vandaar als voorbeeld) kunnen voortborduren.

oogjes open, snaveltjes dicht


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
http://www.mongoosesoluti...ectz.NET_beta_release.asp

Zoiets als dit... maar objectz is zwaar knudde.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Hier staat in uitgelegd hoe je een or mapping kan doen. OJB is dus een tool die java classes genereerd die aan de achterkant weten hoe de db eruit ziet, maar jij zit aan de 'java' kan van die objecten en jij kan je eigen objecten daaruit vullen. Je hoeft dus zelf niet meer druk te maken over allerlei relaties,keys,tabellen en sql en dat soort zaken maar dat word dus voor je gedaan.

Jij kan met de oo kant van het verhaal gaan werken (en dat is voor een oo progger ook een stuk fijner). Dat artikel is ook zeer goed toe te passen buiten OJB maar geeft je wel een indruk hoe dus die koppeling van oo naar relationeel gedaan kan worden.

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
ja die gaan we dus eens een keer bestuderen.

Verwijderd

Nogmaals, dat kan met ADO.NET omdat daarin een scheiding is aangebracht tussen de physieke database, en de 'dataset' en memory. De dataset is een verzameling objecten, binnen het .NET framework. Zodoende kan je met een dataset werken, zonder dat er zelfs maar een koppeling is met een physieke database!

Verwijderd

Ik denk niet dat paulgielens dat bedoeld (en ik vermoed ook dat paulgielens ADO.NET wel al eens aandachtig bekeken heeft).
niet dus denk ik...

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
Verwijderd schreef op 24 september 2002 @ 10:07:
Nogmaals, dat kan met ADO.NET omdat daarin een scheiding is aangebracht tussen de physieke database, en de 'dataset' en memory. De dataset is een verzameling objecten, binnen het .NET framework. Zodoende kan je met een dataset werken, zonder dat er zelfs maar een koppeling is met een physieke database!
welles...nietes...welles...nietes, object mapping praat ik over, niet over connection providers wat ADO in feite is. Verder dan view, insert, update en delete database records kom daarmee niet hoor ;)

Lees eens wat andere mensen hier posten ipv zo'n aanvallende houding innemen. Heb jij naar Objectz.NET of EntityObjectBroker gekeken? Misschien de moeite genomen wat info mbt Jakarta te lezen? Vast niet anders zou je je schamen voor post.

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Verwijderd schreef op 24 september 2002 @ 10:07:
Nogmaals, dat kan met ADO.NET omdat daarin een scheiding is aangebracht tussen de physieke database, en de 'dataset' en memory. De dataset is een verzameling objecten, binnen het .NET framework. Zodoende kan je met een dataset werken, zonder dat er zelfs maar een koppeling is met een physieke database!


De dataset is een off-line container/view op jouw databank. En dat is dus niet wat paulgielens bedoeld, want met die dataset moet je toch nog weet hebben van de interne structuur van je databank. (cq tabellen, relaties, ...)

Uit de .NET help:
Datasets store data in a disconnected cache. The structure of a dataset is similar to that of a relational database; it exposes a hierarchical object model of tables, rows, and columns. In addition, it contains constraints and relationships defined for the dataset.

https://fgheysels.github.io/


Verwijderd

point taken....

  • tijn
  • Registratie: Februari 2000
  • Laatst online: 31-07 00:06
*schop*

Imiddels zijn de eerste (beta) versies van EntityBroker verschenen (zie eerdere link). Heeft iemand er toevallig al iets mee gedaan?
Conceptueel is het wel bijzonder interessant. In het kort komt het er op neer dat je je business objecten voorziet van attributen (.NET attributen dus) die de mapping naar de database aangeven. Daarbij is het ook mogelijk om relaties e.d. aan te geven.
Persoonlijk vind ik dit wel een frisse benadering.
In de J2EE wereld zie je deze concepten ook veel, alleen wordt de mapping dan meestal in een xml document vastgelegd.

Cuyahoga .NET website framework


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 22-08 20:24

Tuinhark

Retro

Als de spreekwoordelijke mosterd na de maaltijd en ter volledigheid: er is nog een alternatief: BC4J (Business Components for Java). Het is een framework dat van Oracle komt (en dus ook proprietary) en wordt 'opgezet' mbv JDeveloper (een gratis Java IDE van Oracle, gebaseerd op JBuilder). Meer details zijn op Oracle Technet te vinden. Het is overigens niet zo dat je hiervoor een Oracle DB per se nodig hebt...

:Y)

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
http://www.alachisoft.com/

http://www.deklarit.com/

http://www.mongoosesolutions.com/mg/objectz.net.asp

http://www.thona-consulti...roducts/entitybroker.aspx

Ik ben dus wederom aan het klooien met or-mapping. Bovenstaand tref je een paar commerciele oplossingen. Helaas is een trial van 30 dagen te kort, dus gaan we zelf maar eens aan de slag. Na het bestuderen van Martin Fowler's boek kom ik tot de volgende zaken:

Rich domein model, dus Data Mapper... veel data en een database scheme wat niet aangepast kan worden naar een OO-friendly model. Lazy Load i.v.m. bulk data en waarschijnlijk een Identity Map. Of kan iemand mij nog afhouden van een home-made persistant-layer door open-source en/of andere tools die geen beperkingen hebben wat betreft non-commercial use?

bvd

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

http://jaxor.sourceforge.net

maar is wel voor java. Zie verder site van martin fowler, daar staat een link ernaar toe: http://www.martinfowler.com/

[ Voor 48% gewijzigd door Alarmnummer op 17-02-2003 12:52 ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Deklarit gaat niet werken in jouw geval, want die genereert de database aan de hand van de business rules. Jij hebt al een database, dus die valt af. Alachisoft's tierdeveloper is erg erg duur en wat ik me ervan herinner is dat deze geen mapping doet, maar alle code aan de hand van starre templates genereert (m.a.w. je hebt er geen reet aan). Objectz.net en entitybroker zijn z.g. mappers, dus datamodel mappen op classes en dmv aangeboden objects de mapping ook echt verwezenlijken. Erg traag in mijn ogen, alhoewel de bouwer van EntityBroker dat wel mee vindt vallen ;).

Ik weet niet precies wat je nu echt wilt, als het BL facade classes zijn, (dus 'Customers' strong typed collection class die Customer classes bevat, Customer is een 1:1 class representatie van de tabel Customer), zijn deze eventueel met de hand te genereren, aan de hand van het schema. LLBLGen heeft dat schema in zich per table class. Je zult alleen een utilty class moeten schrijven (maar dat is een kleinigheid) die SqlTypes values omzet naar .NET types en vice versa en wel op een veilige manier. Als je de BL facade classes laat inheriten van een base class die de bindable interfaces implementeert, zit je ook goed mbt gui's.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Oh en over Martin Fowler: ik heb net met kromme tenen dit artikel gelezen op zn website: http://martinfowler.com/articles/evodb.html . Ik weet nu 1 ding: Mr. Fowler snapt niets van database modelling en databases in general. Beetje knoeien aan tabellen op DDL niveau.... :X

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
Tja voor mij specifiek... ik zit zwaar in de shit, van alle kanten. De opzet is om een DB van DVD in te lezen (15GB max). Tracking & Tracing ;) iig, ik van een fabriek in een web van Business Entity objecten op. Aangezien het batch productie betreft is het nagenoeg altijd n:n relaties tussen de objecten onderling. Naja dat vangen we dan af door slimme relaties te leggen in de zin van: this.GetOma() { return mijnMoeder.GetMoeder(); }. Dan zit ik met een uitgenormaliseerde db, in andere woorden het mappen is een hel. Objectz.NET zou dan wellicht op attribuut niveau uitkomst bieden, maar in mijn optiek is de mapping xml-based niet_je_van_het. Dit alles binnen de context van een stageopdracht maakt het allemaal we spannend :)

edit: Het uiteindelijke trace algoritme is dus uitermate flexibel aan te passen, met het oog op de toekomst, veranderende wetgeving etc.

Ik denk dat ik gewoon een paar weken voor een redelijk eenvoudig or-framework uit moet trekken, en hopen dat de tijdsinvestering de moeite waard is.

ps: LLBLGen is net iets te beperkend aangezien ik niet van TableGateway of RowGateway uit kan gaan... ik zit met multiple roundtrips aangezien de db structuur te star is. Ik zou natuurlijk de LLBLGen laag in kunnen zetten in de DataMapper, maarja... hmm

[ Voor 6% gewijzigd door Scare360 op 17-02-2003 14:46 ]


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Dit is die opdracht mbt die inmense objecthierarchie waarbij je traces moet gaan creeeren uit static data?

Iemand vroeg daar laatst weer naar en kreeg toen het advies eens naar OLAP te kijken. Daar had ik helemaal niet aan gedacht, maar wellicht is dat iets waar je eventueel winst ik kan behalen.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Ik zie nergens een referentie naar MSFT ObjectSpaces, een technologie die waarschijnlijk in .NET 2.0 (verwachte release: samen met Sql Server 2003/4) zal zitten.

Er is een tech-preview van te downloaden met help en alles. Allemaal erg alpha en waarschijnlijk nog aan zware verandering onderhevig, maar wel nuttig om naar te kijken:

http://groups.msn.com/objectspaces

Verder is er ergens op groups.msn ook nog een community van .NET O/R mappers waar een overzicht te vinden is van de verschillende tools. De URL heb ik niet bij de hand, ik zal proberen deze vanavond nog hier bij te zetten (EDIT: http://groups.msn.com/dotnetpersistence)

Kijk ook nog even bij Sun naar JDO (Java Data Objects) als je ideeen nodig hebt, een standaard voor O/R mapping in Java die waarschijnlijk (hopelijk) beter aan gaat slaan dan EJB.

[ Voor 3% gewijzigd door Verwijderd op 17-02-2003 20:13 ]


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 12:59
EfBe: ja's die opdracht. OLAP heb ik reeds bekeken en is helaas geen optie, zit aan SQL server 7 vast en die ondersteund geen updates over meerdere partities. Besides onder een mooi OO-model kom ik niet uit i.v.m. trace algoritme.

Ow en paull, objectspaces had ik al eens bekeken, maar dat is allemaal zo onzeker voor het moment. Linkje zou inderdaad wel handig zijn, alvast bedankt.

Deze misschien: DotNetPersistence@groups.msn.com

[ Voor 77% gewijzigd door Scare360 op 17-02-2003 16:09 ]


Verwijderd

paulgielens schreef op 17 February 2003 @ 14:42:
Ik denk dat ik gewoon een paar weken voor een redelijk eenvoudig or-framework uit moet trekken, en hopen dat de tijdsinvestering de moeite waard is.
Ik heb vorig jaar (samen met anderen) redelijk wat tijd in een dergelijk framework gestoken en daar is best wat aardige code uitgekomen. Na wat 'schoonmaakwerkzaamheden' denk ik dat het zo'n 60-80% compleet is (afhankelijk van je eisen natuurlijk).

De basis van het systeem leent zich denk ik goed voor jouw eisen: mapping via Attributen (dus niet XML), gebaseerd op DataReaders ipv DataSets (perf!) en opgezet om zo flexibel mogelijk te zijn.

Ik overweeg deze code onder een Open Source licentie uit te brengen maar zoals gezegd zit er nog wat werk in voordat dat kan (Open Source moet geen excuus zijn om halve code uit te brengen die niet voldoende getest is).

Mocht je geinteresseerd zijn om samen hieraan te werken dan hoor ik het graag. (edit: e-mail adres verwijderd ivm spam gevaar)

[ Voor 5% gewijzigd door Verwijderd op 18-02-2003 11:51 ]

Pagina: 1