-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Nach einem Rollback die Objekte richtig füllen
PostPosted: Wed May 03, 2006 10:50 am 
Beginner
Beginner

Joined: Wed Feb 08, 2006 10:09 am
Posts: 28
Hallo,
ich habe mal eine grundsätzliche Frage.

Nach einem Session#getTransaction()#rollback haben ja alle Objekte, die im
Cache der Session hängen, nicht mehr den richtigen Stand.

Ich habe nun folgendes Construct gebaut.

SessionImpl sessionImpl = (SessionImpl)getSession();
rollbackedInstances = new HashSet();
rollbackedInstances.addAll(sessionImpl.getPersistenceContext().getEntitiesByKey()
.values());
sessionImpl.getTransaction().rollback();

und nach einem Neubeginn:
getSession().beginTransaction();
if(rollbackedInstances != null)
{
for(Iterator iter = rollbackedInstances.iterator(); iter.hasNext();)
{
Object instance = iter.next();
getSession().refresh(instance);
rollbackedInstances = null;
}
}

Es funktioniert, aber würde trotzdem mal gerne Eure Meinung hören.

Ist das jetzt ein schlimmer Hack, weil z.B. nicht gegen Session sondern
gegen SessionImpl programmiert wurde?

Man könnte mit einem ähnlichen Verfahren vielleicht die Tatsache umgehen, daß nach einer Exception eine Session unbrauchbar ist.
Dazu holt man sich nach einer Exception mit dem selben Verfahren die
Objekte der kaputten Session, macht sie transient, eröffnet eine neue
Session und übernimmt die alten Objekte mittels Session#update (oder
so) in die neue Session.

Sagt mal bitte Eure Meinung dazu.

Ciao
Peter Schütt


Top
 Profile  
 
 Post subject:
PostPosted: Sat May 06, 2006 6:30 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Wenn Du keine andere Referenz auf die Objekte in der Business Logik hast, dann ist mir der Nutzen nicht ganz klar wieso Du die Objekte wieder zum Leben erwecken möchtest.

Generell ist das was Du tust kein Hack, sondern der normale Weg Referenzen die man hat in einer neuen Session zu aktualisieren.

Gruß Sebastian

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.