Now in the Hibernate we can delete objects in any order, without risk of foreign key constraint violations. It is still possible to violate a NOT NULL
constraint on a foreign key column by deleting objects in the wrong order, if delete the parent, but forget to delete the children.
Session.delete() will remove an object's state from the database. Whenever it can still hold a reference to a deleted object. It is best to think of delete() as making a persistent instance, transient.