Session.delete() will remove an object's state from the database.
Of course, your application might still hold a reference to a deleted object.
It's best to think of delete() as making a persistent instance
transient.
sess.delete(cat);
You may delete objects in any order you like, 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, e.g. if you delete the parent, but forget to delete the
children.