I am reading the book Hibernate in Action (latest Early edition). I came across "In order to avoid unnecessary updates in dirty checking in the case of string or any other object other than collections, new instances need to be created --page 30 of the early edition book

public String getitem(){
return new String(this.itemvalue); }

please explain in detail the need behind this behaviour

Stackoverflow Link:
page 30 of MEAP v7,
Another issue to consider is dirty checking. Hibernate automatically detects state changes in order to
synchronize the updated state with the database. It's usually safe to return a different instance from the
getter method than the instance passed by Hibernate to the setter. Hibernate compares them by value—not
by object identity—to determine whether the attribute's persistent state needs to be updated. For example,
the following getter method doesn't result in unnecessary SQL UPDATEs:
// This is OK
public String getFirstname() {
return new String(firstname);

Message was edited by:

Message was edited by:
Got it.Thanks very much for your time and reply.