Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / JavaBeans / October 2007

Tip: Looking for answers? Try searching our database.

Toplink EJB and cascade persistence

Thread view: 
tom.simmons@vetco.com - 26 Sep 2007 11:51 GMT
I am using EJB3 and Toplink.

I have a parent entity and a child entity that is a one to many, the
child has the cascade=all defined, and the parent has a collection for
all the children that belong to it.

I can happily add children, and call either the create (persist) or
edit (merge) methods in the facades and the parent and children will
correctly be saved to the database, with the correct ID's in the
children pointing to the parent.

What I need to do though is be able to delete a child by saving the
parent if the child has been marked for deletion.

The system doesn't performing the deletes/adds as it goes, but instead
waits until the page is submitted.  So what I thought was when I save
the parent, I would be able to add something into create/edit methods
of the child facade class that would check a transient field and if it
said delete would instead call the remove method.

However by adding break points in the the three persistence methods of
the child facade, I can see that when calling the edit of the parent,
none of these methods are used.

Any ideas?
Torsten Jenkner - 09 Oct 2007 16:30 GMT
tom.simmons@vetco.com schrieb:
> I am using EJB3 and Toplink.
>
[quoted text clipped - 21 lines]
>
> Any ideas?

 I am not quite sure to understand you correctly. But by default the
entity manager does not sync everything immediately but is asynchronous.
i understand that you expect the persistence takes place earlier and not
just when the "page" is submitted. If you wish to have persistence by
your control, you can use the EntityManager's flush() method. But this
should be used very careful, due to the fact that there are reasons
behind the point in time decision of the EntityManager to persist
itself. Doing it yourself can cause malperformance.
Otherwise and the better way is to try to update your "page" with the
updated entity Pojos (in memory) already before they are persisted, as
this is asynchronous this does not mean to be out of sync in any case,
the EntityManager takes care of all necessary persistence.

greetings

Torsten Jenkner
Torsten Jenkner - 09 Oct 2007 16:31 GMT
tom.simmons@vetco.com schrieb:
> I am using EJB3 and Toplink.
>
[quoted text clipped - 21 lines]
>
> Any ideas?

 I am not quite sure to understand you correctly. But by default the
entity manager does not sync everything immediately but is asynchronous.
i understand that you expect the persistence takes place earlier and not
just when the "page" is submitted. If you wish to have persistence by
your control, you can use the EntityManager's flush() method. But this
should be used very careful, due to the fact that there are reasons
behind the point in time decision of the EntityManager to persist
itself. Doing it yourself can cause malperformance.
Otherwise and the better way is to try to update your "page" with the
updated entity Pojos (in memory) already before they are persisted, as
this is asynchronous this does not mean to be out of sync in any case,
the EntityManager takes care of all necessary persistence.

greetings

Torsten Jenkner


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.