new instance of a persistent class which is not associated with a
Session, has no representation in the database and no identifier value is considered transient by Hibernate:
Person person = new Person(); person.setName("Foobar"); // person is in a transient state
A persistent instance has a representation in the database, an identifier value and is associated with a
Session. You can make a transient instance persistent by associating it with a
Long id = (Long) session.save(person); // person is now in a persistent state
Now, if we
close the Hibernate
Session, the persistent instance will become a detached instance: it isn't attached to a
Session anymore (but can still be modified and reattached to a new
Session later though).
All this is clearly explained in the whole Chapter 10. Working with objects of the Hibernate documentation that I'm only paraphrasing above. Definitely, a must-read.