Почему «public» не разрешено для свойств в объектах JPA? - PullRequest
6 голосов
/ 11 января 2010

Спецификация JPA 2.0 гласит на странице 22:

Переменные экземпляра класса должны быть закрытыми, защищенными или видимостью пакета независимо от того, является ли доступ к полю или доступ к свойствуиспользуется.Когда используется доступ к свойству, методы доступа к свойству должны быть открытыми или защищенными.

Почему публичный доступ не разрешен?

Ответы [ 3 ]

10 голосов
/ 11 января 2010

С открытыми полями не было бы никакой возможности для надежной работы прокси-сервера - если кто-то обращается к полю напрямую, то для механизма сохранения не существует простого способа перехватить этот вызов и (скажем) инициализировать содержащий объект, если это прокси.

Если доступ к полям невозможен, синтетические методы-получатели могут быть сгенерированы на прокси-объекте для перехвата вызовов метода и выполнения любой необходимой закулисной работы.

4 голосов
/ 11 января 2010

Используя DataNucleus в качестве поставщика JPA, вы можете использовать открытые поля, , но , а затем вам нужно будет пометить любые классы, которые обращаются к этим полям, как "сохраняющие постоянство" (см. Документы DataNucleus), чтобы их можно было улучшить чтобы удовлетворить это

0 голосов
/ 11 января 2010

Чтобы быть уверенным, что используются методы доступа (например, get ... set .... is ....). Это часть принципа изоляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...