Quote:
What is the easiest way to ensure the consistency between two opposite ends?
The short answer is "not screwing the data", in the same way you would not do it when working directly with a database.
You must decide whether the Address in your model can exist independently or not. In other words, does it makes sense, in your program, that an Address be added to the database, not linked to any particular person (for further use, for example).
If Address is not an "independent entity", then putting mapping not-null="true" ,and enforcing the same on the database will help protect your data.
If you want more safeguards on the Java code side, you can try defining Adddress as a "depending composite element" (in the documentation: 8.2 Collections of dependent objects), rather than an entity.