Sorry, but as I said, there is (as far as I know) no clean (ie. portable)
way to tell an entity bean to refresh itself.  The specs even specifically
say that an entity bean does NOT have to worry about the database being
changed "behind its back" (although you should peraps check the exact details).

I agree that separate entity beans seem to be too small.

How about using dependent objects?  If you had a big entity bean that
contained Collections of dependent objects (images and text) then changing
these dependent objects inside the bean will leave the bean in a "clean"
state.  The changes will be persisted to the DB automatically.  (EJB 2.0
would perhaps be better than EJB 1.1 for this approach).

I'll have to leave you to decide if that's really workable.  If you decide
you have to stick with direct JDBC access to write to the DB from a Session
bean, then I think you'll be stuck with non-portable solutions.

Good luck!
Nick

At 07:59 PM 10/12/00 +0100, you wrote:
>
>the situation is this.
>
>this is the current data model
>
>I have and entity bean called "Content" this repsents 1 row in a table
>called "content". The content enitity bean can have N number of images
>(corresponds to n number of rows in the images table) and N number of text
>blocks (corresponds to n number of rows in the text table).
>
>However images and text blocks are independent of content. Content is only a
>grouping of these assets if you like. So we get a many to many relationship.
>
>
>1 content can reference many images
>1 image can be referenced by many content.
>(same for text)
>
>so when a content entity bean loads up it loads into its attributes all the
>data from the images and text that it references. So lets assume all this
>data is now in a cache.
>
>
>if i then change the data in an image or text independently of the entity
>bean (perhaps by a session bean) then the data that is cached in the entity
>bean is dirty (does not match what is in the database). SO how do i notify
>the entity bean to refresh it's self ?
>
>....
>Another model you hinted on was that Image and text could be enitity beans.
>They are certainly independent enities (qualify as enities). However i
>consider them to be too fine grained. For example text block could be as
>small as "hello this is a sentance" which is just a small string and so
>wrapping this small string in an entity bean seem way too much overhead. But
>the flip side is it would so the cache problem.
>
>the session bean would do updates via the image and text beans and so they
>would always contain the correct data. And content would get the data from
>the image and text entity bean each time. However if the content has 50 text
>block and 50 images that is 100 calls (one to each of the entity beans that
>represent this data), which as you see is a major overhead
>
>Any thoughs on how i best model this.....
>
>cheers
>
>-----Original Message-----
>From: Nick Newman [mailto:[EMAIL PROTECTED]]
>Sent: Thursday, October 12, 2000 5:08 PM
>To: Orion-Interest
>Subject: Re: Invalidating an Entity bean
>
>
>Hi Peter,
>
>I'm not claiming guru-hood, but as far as I know you CAN'T do that cleanly.
> My thoughts on your best options are:
>
>1) Tell Orion that the entity beans do not have exclusive write-access to
>the database by setting exclusive-write-access="false" in the
>orion-ejb-jar.xml (which is orion-specific).  I believe this causes the
>data to be re-read at the start of every transaction.
>
>2) Re-write your session bean to makes its database changes through the
>entity beans rather than through direct JDBC.
>
>Nick
>
>At 12:02 PM 10/12/00 +0100, you wrote:
>>Hi gurus
>>
>>How do I do this cleanly.
>>
>>I have and Entity that has attributes A,B,C and D. These attributes are all
>>read from database tables.
>>
>>A and B are read from Table 1
>>C and D are read from Table 2
>>
>>So I have Entity Bean 1, this is loaded by the app server (perhaps by a
>>findByPrimaryKey) method. This means that Entity Bean 1 is now a cache of
>>the data in A,B,C and D. 
>>
>>However while this entity bean is in the cache, via a session bean I change
>>the data of C and D in table 2. This mean that Entity Bean 1 now has dirty
>>data. So the question is how do I force the Entity beans to do and EJB
>Load.
>>
>>
>>Also the data in C and D in table 2 may be shared by N number of entity
>>beans so I may need to refresh N number of Entity Beans depending on which
>>ones are in the cache.
>>
>>I only want to call EJB load for Entity beans currently in the cache and of
>>these I only want to call ejb load for the ones that refer to the changed
>>data.
>>
>>Cheers Peter
>


Reply via email to