Bonjour amis développeurs Java

Je voudrais comprendre comment fonctionne le code d'Hibernate.
En particulier, comment fait-il pour traiter les annotations et dans quelles circonstances utilise-t-il de la proxyfication ?
Question subsidiaire : Si je voulais mettre un web service à la place d'une base de données, que faudrait-il modifier dans le code ?

Tout éclaircissement serait vivement apprécié