A beginner’s guide to Hibernate flush operation order

Introduction As explained in this article, Hibernate shifts the developer mindset from SQL to entity state transitions. A JPA entity may be in one of the following states: New/Transient: the entity is not associated with a persistence context, be it a newly created object the database doesn’t know anything about. Persistent: the entity is associated with a persistence context (residing in the 1st Level Cache) and there is a database row representing this entity. Detached: the entity was previously associated with a persistence context, but the persistence context was closed, or the… Read More

How do Set and List collections behave with JPA and Hibernate

Introduction Hibernate is a great ORM tool, and it eases development considerably, but it has a lot of gotchas you must be aware of if you want to use it properly. On medium to large projects, it’s very common to have bidirectional parent-child associations, which allow us to navigate both ends of a given relationship. When it comes to controlling the persist/merge part of the association, there are two options available. One would be to have the @OneToMany end in charge of synchronizing the collection changes, but this is an inefficient approach…. Read More