Hibernate Proxy
Es una clase generada en tiempo de ejecución y extiende de la entidad original, hibernate utiliza proxies de las clases para manejar el lazy loading.
Para que hibernate pueda ofrecer lazy-loading de propiedades, crea clases proxy las cuales son subclases de la clase original. Por lo tanto, una colección en ocasiones podrás verla como un HashSet y a veces la misma propiedad tendrá el tipo PersistentSet.
Cuando se hace un query para obtener los books del author, retornará un proxy de acuerdo al tipo de colección original:
Set -> PersistentSet
SortedSet -> PersistentSortedSet
List -> PersistentList