Skip to main content

Hibernate session.merge(persistingObject) Vs session.saveOrUpdate(persistingObject)

Hibernate provide two techniques to deal with save and update functionality,
As per those techniques it first checks the instance in db, if
It is already persisted in that database, if that is the case then it
will simply persist the updated fields into DB otherwise it will persist
the new instance in to DB.

session.saveOrUpdate(persistingInstance):It also persist the new instance in to DB
and update the already persisted instances.
Insert the data if the primary key is not exist.

Problem:In some scenario's you might face the issue of
NonUniqueObjectException : message
"a different object with the same identifier value was
already associated with the session."

Technically before persisting in to db it first check in to the Hibernate cache,
and by any reason if that
object is present in cache then you will get the above exception.

So by remedy of the above issue we can use session.merge(persistingObject):
It is directly checking in to your database not in Hibernate cache,
so the above error will never ever arise.

Recommendation
:session.merge();

Comments

Popular posts from this blog

Sorting an List in Java

// Create a list String[] strArray = new String[] {"z", "a", "C"}; List list = Arrays.asList(strArray); // Sort Collections.sort(list); // C, a, z // Case-insensitive sort Collections.sort(list, String.CASE_INSENSITIVE_ORDER); // a, C, z // Reverse-order sort Collections.sort(list, Collections.reverseOrder()); // z, a, C // Case-insensitive reverse-order sort Collections.sort(list, String.CASE_INSENSITIVE_ORDER); Collections.reverse(list); // z, C, a

Linked List Example

/* * Copyright (c) 2000 David Flanagan. All rights reserved. * This code is from the book Java Examples in a Nutshell, 2nd Edition. * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied. * You may study, use, and modify it for any non-commercial purpose. * You may distribute it non-commercially as long as you retain this notice. * For a commercial use license, or to purchase the book (recommended), * visit http://www.davidflanagan.com/javaexamples2. */ /** * This class implements a linked list that can contain any type of object that * implements the nested Linkable interface. Note that the methods are all * synchronized, so that it can safely be used by multiple threads at the same * time. */ public class LinkedList { /** * This interface defines the methods required by any object that can be * linked into a linked list. */ public interface Linkable { public Linkable getNext(); // Returns the next element in the list public...