Yes, the getters and setters access the fields directly: when an object is proxied, CGlib-generated methods replace all those getters/setters, and when those generated methods are called, they replace the entire object eith the non-proxied "real" version. If you bypass those getters/setters, no de-proxying can happen.
In section 5.1.9, the bit to which I was referring is:
hibernate ref docs wrote:
The access attribute lets you control how Hibernate will access the property at runtime. By default, Hibernate will call the property get/set pair. If you specify access="field", Hibernate will bypass the get/set pair and access the field directly, using reflection. You may specify your own strategy for property access by naming a class that implements the interface org.hibernate.property.PropertyAccessor.