Search the web
Sign In
New User? Sign Up
SimpleORM
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Show off your group to the world. Share a photo of your group with us.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Record caching   Message List  
Reply | Forward Message #1775 of 1847 |
RE: [SimpleORM] Re: Record caching

Hello Garry,

I am confused by your use case.

If you just want to have a record set of cached values that is not really part
of the transaction, then just don't attach it. You can query the detached
SDataSet directly with SDataSet methods. This will work for codes etc.

If you want to update two or more Data Sets in different transactions, you will
have to manage the sessions manually. But that is a really strange use case.

If you want a generic, fully automatic caching mechanism, then that is not
SimpleOrm. It is not really Hibernate either unless you are extremely careful.
Generally a very bad idea unless you have proven performance requirements.
Leads to horrible bugs.

The attach method has been removed, so please do not depend on it.

One way or the other you will need to know when to start your transactions.
There is usually an obvious place at the outer level, eg. where the servlet is
called.

Regards,

Anthony

At 11:39 PM 30/06/2009, you wrote:
>Hi,
>
>(Before we get into this I just wanted to say that I really like simpleORM and
it has helped me enormously. I dont want to come off like I am complaining
about something, because I am not and have no right to. I am just trying to
understand your product and its proper use. And maybe my comments/issues will
even help.)
>
>I am aware of session.hasBegun and I use it in various places. However, it
will not help in this situation.
>
>The implied assumption in attaching a dataset with a session.begin(DS) is you
know that you are at the beginning of something. If classes are being called in
some arbitrary order, a class will not be guaranteed to be at the start of a
session. Therefore, if it has a dataset (or records) it wants to add to the
active dataset it cannot do so if the session has already begun and will be
stuck out of luck.
>
>This is a small (and maybe contrived) limitation, but i have actually run into
it. It is not hard to see how this can come up if a person is getting records
from free form queries or using stored procedures and then wants to add all or
some of those records to the active dataset.
>
>I have gotten around this issue by using the deprecated attach method. I did
not want to do it, but I dont think I had any other choice. This is one of the
reasons I started this thread. It seems to me that while the attach method is
not for "normal" use, removing it from SimpleORM will reduce it flexibility.
>
>Again, thanks for SimleORM
>GA
>
>
>
>----------
>
>To: SimpleORM@yahoogroups.com
>From: berglas@...
>Date: Wed, 24 Jun 2009 18:35:04 +1000
>Subject: RE: [SimpleORM] Re: Record caching
>
>
>
>
>Normally you start your sessions at the top level where a request comes in.
>
>But you can call session.hasBegun() to find out.
>
>Anthony
>
>At 12:27 AM 9/06/2009, you wrote:
>
>>Thanks for the response.
>>
>>I looked thru LongTransactionTest. From what I see, it looks like the code
assumes it can set the dataset for a session. I dont know the order in which my
classes will be called. And if they are doing lazy loading of data, I always run
the risk that session.begin() has already been called by some other class in
this thread and therefore the class will get an exception by calling
ses.begin(ds).
>>
>>GA
>>
>>
>>
>>----------
>>
>>To: <mailto:SimpleORM@yahoogroups.com>SimpleORM@yahoogroups.com
>>From:
<mailto:berglas@...>berglas@...
>>Date: Mon, 8 Jun 2009 10:11:33 +1000
>>Subject: Re: [SimpleORM] Re: Record caching
>>
>>
>>
>>
>>
>>Hello Gary
>>
>>You could also just reattach the data set to a session (ses.begin(ds)) updated
it, then detachAndCommit again. See LongTransactionTest.simpleDetachTest.
>>
>>But yes, only one data set at a time per session. Hard to see how that would
be a problem, but bad things could happen otherwise. (You could trick SimpleORM
into having two sessions for the same JDBC connection, but that would probably
be a very bad idea.)
>>
>>As noted previously on this list, the single record detaching from Sessions
has been completely removed from the Subversion version. Now records must always
live in a DataSet. The SDataSet.attach method that you were using is for
internal use only.
>>
>>Anthony
>>
>>At 04:24 AM 8/06/2009, you wrote:
>>
>>>--- In
<mailto:SimpleORM%40yahoogroups.com><mailto:SimpleORM@yahoogroups.com><mailto:Si\
mpleORM@yahoogroups.com>SimpleORM@yahoogroups.com, gary adams <gershonadams@...>
wrote:
>>>>
>>>>
>>>> I have been using SimpleORM for the last two months and its a great tool. I
have a question about record caching
>>>>
>>>>
>>>>
>>>> If one has static information in the database that he wants to cache in an
application, like configuration information, what is the proper methodology of
doing this with simpleORM? The app will need access to this information
throughout its life.
>>>>
>>>>
>>>>
>>>> I have done it likes this.
>>>>
>>>>
>>>> LIST<x> listX= session.queryNoFlush(queryDEF);
>>>> session.commitAndDetachDataSet();
>>>>
>>>> Is this correct? I am concerned that the commit being done in the class
that requires the cache will affect other items in the database that should not
be committed yet.
>>>>
>>>
>>>You can make this action as first one after starting your program. So no
other items in the database can be affected, because your program hasn't any
open transactions yet.
>>>
>>>> Along the same lines, what is the proper way to attaching records to a
dataset from a rawquery? I have used
>>>> session.getDataSet().attach(record), but I am concerned because it is
deprecated.
>>>
>>>You can use something like:
>>>
>>>SRecordMeta<? extends SRecordInstance> metaRec;
>>>SRecordInstance record = dataSet.createWithNullKey( metaRec );
>>>
>>>Then you fill the record with functions like:
>>>
>>>record.setString( f, value );
>>>
>>>Good luck
>>>Thomas
>>>
>>>
>>

Dr Anthony Berglas, anthony@... 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.




Wed Jul 1, 2009 5:29 am

aberglas
Offline Offline
Send Email Send Email

Forward
Message #1775 of 1847 |
Expand Messages Author Sort by Date

I have been using SimpleORM for the last two months and its a great tool. I have a question about record caching If one has static information in the database...
gary adams
gershonadams
Offline Send Email
Jun 7, 2009
1:35 pm

... You can make this action as first one after starting your program. So no other items in the database can be affected, because your program hasn't any open...
t.leichner
Offline Send Email
Jun 7, 2009
6:25 pm

Hello Gary You could also just reattach the data set to a session (ses.begin(ds)) updated it, then detachAndCommit again. See...
berglas@...
Send Email
Jun 8, 2009
12:14 am

Thanks for the response. I looked thru LongTransactionTest. From what I see, it looks like the code assumes it can set the dataset for a session. I dont...
gary adams
gershonadams
Offline Send Email
Jun 8, 2009
2:28 pm

Normally you start your sessions at the top level where a request comes in. But you can call session.hasBegun() to find out. Anthony ... Spreadsheet Detective,...
berglas@...
Send Email
Jun 24, 2009
8:35 am

Hello, You can also use SSessionJDBC.detachUnflushedDataSet() instead of SSessionJDBC.commitAndDetachDataSet(); If you only query record without flushing, it...
damien hostin
damien.hostin@...
Send Email
Jun 8, 2009
8:31 am

Hi, just to add my two (euro) cents, I think you could use a different dataSet to handle your configuration information. SDataSet configDs = new SDataSet(); ...
Franck Routier
routier_franck
Offline Send Email
Jun 8, 2009
10:57 am

Hello Garry, I am confused by your use case. If you just want to have a record set of cached values that is not really part of the transaction, then just don't...
anthony@...
aberglas
Offline Send Email
Jul 1, 2009
5:29 am
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help