Re: Thoughts from ADO

[email protected] Mon, 10 Jan 2011 17:50:34 +1000
Newsgroups gmane.comp.java.orm.simpleorm
Message-ID <[email protected]>
--=====================_264369621==_
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

At 03:42 AM 26/11/2010, you wrote:
>  
>
>Hi Anthony,
>
>> The first is DataSet.GetChanges, which produces a dataset which only
>> has changed records. It does a copy, but we could easily do a
>> PurgeCleanRecords. The point being that if a dataset is returned from
>> a remote middle tier, we could purge out any unchanged records for
>> efficiency.
>
>Do you mean if the dataset has to travel on the wire or between several
>JVMs ?

Yes, which I thought was one of your use cases.


>> 
>> The second is AcceptChanges. What this does is explicitly mark a
>> record non-dirty, and copies fields to the optimistic values. It would
>> be called by SessionJDBC after reading or updating records. Might be a
>> slightly cleaner approach to our current handing of dirtyness.
>
>Couldn't you elaborate on this, I don't get the point ?...

Mainly just that our dirtyness is a little dirty at the moment.  SessionJdbc knows too much about the internal state of datasets.  


>While we are on new ideas, I'm missing a feature in current Simpleorm,
>related to data validation.
>Currently we can valide a field, or a record.
>But there is no easy way to validate coherence between different
>records.
>For example I can handle the fact that a field must be a date, or a date
>after 01/01/2000, with SValidator. I can check on the record level that
>the beginning date is before the end date of the record, with
>onValidateRecord(). But I have no way to check that two record won't
>have overlapping periods before committing... (well, no way native to
>Simpleorm).

So maybe an onValidateFlush hook?  Could be on both SRecordMeta and SSession.  SRecordMeta.onValidateFlush called for all dirty records in the order in the update list.  Then SSession.onValidateFlush.  And only then the records are actually flushed so that exceptions will not produce inconsistent state.  

Easy to do, and indeed a gap.

Hibernate etc. do not really do validation in normal usage.  It is all supposed to be just dumb fields in POJOs.  There are ways to listen for events, but they are not really designed for application logic -- you need to reflect into the object being processed.


>I don't really know how this would be possible, or how other frameworks
>address this issue, but it would certainly be interesting to have.
>
>Any comment ?
>
>Regards,
>
>Franck
>
>

Dr Anthony Berglas, [email protected]       Mobile: +61 4 4838 8874
Just because it is possible to push twigs along the ground with ones nose
does not necessarily mean that is the best way to collect firewood.


------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/SimpleORM/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/SimpleORM/join
    (Yahoo! ID required)

<*> To change settings via email:
    [email protected] 
    [email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/


--=====================_264369621==_
Content-Type: image/jpeg; name="fc1f549.jpg";
 x-mac-type="4A504547"; x-mac-creator="4A565752"
Content-ID: <[email protected]>
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="fc1f549.jpg"

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAPAIkDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9u/8A
gqt/wT1/at8K/CHXvj3+wX+1X+2PF4y8Dy6r4q8e/A+8/aI+LHiu08deFDNPqeqzfD2O78RS6vpn
iPw7Bva08KaZctb6/osUljo0EPiKCyj1fp/2df8Ago38INb/AOCZ1p8d/gZ8drX4UfEq38baZ4b8
aeDP2kLz4yftf+NLX4zalYW1nJ8IPAvhS7+J+h/FLxhP47ltLHUfhhB4b1trF7K61DUrvQotSi8U
x6d+3fx2+OPw1/Zt+FHjD41/F/W5/Dnw58CWNvqPibWrbSNX16extbu/tNMgePSdCstQ1W8aS9vb
aHZaWczKJDI4WJHdf4Zv2Pv2x/2Afg9/wWT/AGkv2t/GEdnoP7NXimD4ha78CddHwt17VB4d8eeL
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
AA5n/Yt/6B/xT/8ADna5/wDEUAf/2Q==
--=====================_264369621==_--