EJB3 in Action wrote:Defining O/R mapping using fields or instance variables of entity is known as field-based access, and using O/R mapping with properties is known as property-based access.
I have some doubts about the following questions:
What do the authors mean under "field-based access" and "property-based access"? What are fields and properties? and what is the difference between them?
Alexey Saenko wrote:
I have some doubts about the following questions:
What do the authors mean under "field-based access" and "property-based access"? What are fields and properties? and what is the difference between them?
Field based access uses the member variables whereas property based access uses getter/setters.
In other words, in terms of practice in the case of field-based access a developer annotates instance variables and in the case of property-based he (or she) annotates getters/setters, right? Is there really so big difference between such styles to annotate? It looks like these styles are completely identical. Am I wrong?
Alexey Saenko wrote:In other words, in terms of practice in the case of field-based access a developer annotates instance variables and in the case of property-based he (or she) annotates getters/setters, right?
That's correct.
Alexey Saenko wrote:
Is there really so big difference between such styles to annotate? It looks like these styles are completely identical. Am I wrong?
It's more of a personal choice. But the important thing is, you can't mix and match those 2 styles. i.e. your entity should not be annotated at field level as well as property level.
Alexey Saenko wrote:In other words, in terms of practice in the case of field-based access a developer annotates instance variables and in the case of property-based he (or she) annotates getters/setters, right?
That's not correct.Only getters can be annotated.
JPA specification says,
2.1.1 Persistent Fields and Properties
When property-based access is used, the object/relational mapping annotations for the entity class
annotate the getter property accessors
Alexey Saenko wrote:In other words, in terms of practice in the case of field-based access a developer annotates instance variables and in the case of property-based he (or she) annotates getters/setters, right?
That's not correct.Only getters can be annotated.
Durai, you are right. I did not choose the exact term while explaining that. For property based access, annotating setters will not help.