Beste mensen, ik overpijns een probleem waarvan ik eigenlijk zelf niet helemaal weet of het een probleem is.
Ik heb een modulaire applicatie (taal maakt even niet uit) en die haalt gegevens uit een relationele database.
Nu maakt hij van de records uit de DB objecten. Elk object bevat de waarden die eigenlijk in 95% van de gevallen overeenkomen met de kolommen in de DB.
Nu zou het kunnen dat module 1 een record uit die DB haalt, en vervolgens module 2 hetzelfde record.
Omdat beide modules het record kunnen aanpassen zou het kunnen dat je twee schermpjes open hebt op je scherm, en je op schermpje 1 op 'save' drukt, en je veranderde waarden naar de DB schrijft.
Nu wil ik dan eigenlijk zorgen dat schermpje twee ook automagisch bijgewerkt wordt.
Ik had zelf het volgende bedacht:
elk 'object' dat gemaakt wordt uit een record (met PK) uit de DB wordt in een soort van collection gezet, en wanneer een ander schermpje hetzelfde object ophaalt uit de DB wordt er in de collectie gespit, wordt het record uit de collection wordt aangepast aan de laatste 'waarheid' en dan teruggegeven.
In dit geval is het dus zo dat beide schermpjes hetzelfde object weergeven. Ik kan dan dmv wat logica (events etc.) zorgen dat schermpje 2 wordt ververst als ik op het object een 'save' aanroep.
Echter heeft het een nadeel, namelijk dat ik een enorme collectie ga bijhouden waarin alle instanties staan die ik ooit uit de DB heb opgehaald.
Natuurlijk kan ik ook gaan zorgen dat ik wanneer ik geen referenties meer heb naar een record ik die uit die collectie haal, maar dit is allemaal veel werk.
Bijkomend is er een probleem dat andere processen records kunnen aanpassen. Dit heb ik opgelost door een timestamp toe te voegen, en het update statement een "where timestampCol = timestampFromObj" mee te geven.
Zijn er nog andere mogelijkheden om dit te realiseren? Ik kan me niet voorstellen dat ik de eerste ben die hiermee rondloopt.
Ik heb een modulaire applicatie (taal maakt even niet uit) en die haalt gegevens uit een relationele database.
Nu maakt hij van de records uit de DB objecten. Elk object bevat de waarden die eigenlijk in 95% van de gevallen overeenkomen met de kolommen in de DB.
Nu zou het kunnen dat module 1 een record uit die DB haalt, en vervolgens module 2 hetzelfde record.
Omdat beide modules het record kunnen aanpassen zou het kunnen dat je twee schermpjes open hebt op je scherm, en je op schermpje 1 op 'save' drukt, en je veranderde waarden naar de DB schrijft.
Nu wil ik dan eigenlijk zorgen dat schermpje twee ook automagisch bijgewerkt wordt.
Ik had zelf het volgende bedacht:
elk 'object' dat gemaakt wordt uit een record (met PK) uit de DB wordt in een soort van collection gezet, en wanneer een ander schermpje hetzelfde object ophaalt uit de DB wordt er in de collectie gespit, wordt het record uit de collection wordt aangepast aan de laatste 'waarheid' en dan teruggegeven.
In dit geval is het dus zo dat beide schermpjes hetzelfde object weergeven. Ik kan dan dmv wat logica (events etc.) zorgen dat schermpje 2 wordt ververst als ik op het object een 'save' aanroep.
Echter heeft het een nadeel, namelijk dat ik een enorme collectie ga bijhouden waarin alle instanties staan die ik ooit uit de DB heb opgehaald.
Natuurlijk kan ik ook gaan zorgen dat ik wanneer ik geen referenties meer heb naar een record ik die uit die collectie haal, maar dit is allemaal veel werk.
Bijkomend is er een probleem dat andere processen records kunnen aanpassen. Dit heb ik opgelost door een timestamp toe te voegen, en het update statement een "where timestampCol = timestampFromObj" mee te geven.
Zijn er nog andere mogelijkheden om dit te realiseren? Ik kan me niet voorstellen dat ik de eerste ben die hiermee rondloopt.
This message was sent on 100% recyclable electrons.