Как спящий режим заполняет сущности - PullRequest
2 голосов
/ 04 января 2011

очень глупый вопрос, так как я уже некоторое время использую hibernate, но я столкнулся с особым случаем и вдруг понял, что не уверен, как hibernate заполняет сущности БД.

public class User {
    ...
    @Column
    private String name;

    public void setName(String name) {
        this.name = name;
    }
}

Когдаhibernate создает новый экземпляр User (при загрузке из БД), как он будет заполнять имя свойства этого экземпляра?Я всегда предполагал, что hibernate вызовет setName для этого, но у меня возникает подозрение, что hibernate игнорирует установщик и (с отражением) устанавливает значение поля напрямую?

спасибо,
Stijn

Ответы [ 3 ]

5 голосов
/ 04 января 2011

Аннотации Hibernate и JPA используют размещение Аннотации, чтобы определить, какой тип доступа использовать. В приведенном выше примере будет использоваться доступ к полю.

из документации по Hibernate :

В зависимости от того, аннотируете ли вы поля или методы, тип доступа, используемый Hibernate, будет полем или свойством. Спецификация EJB3 требует, чтобы вы объявляли аннотации к типу элемента, к которому будет осуществляться доступ, т.е. к методу getter, если вы используете доступ к свойству, к полю, если вы используете доступ к полю. Следует избегать смешивания аннотаций в обоих полях и методах.

5 голосов
/ 04 января 2011

Атрибут доступа позволяет контролировать, как Hibernate получает доступ к собственность во время выполнения. По умолчанию, Hibernate назовет имущество получить / установить пару. Если вы укажете access = "field", Hibernate будет обходить получить / установить пару и получить доступ к полю непосредственно используя отражение. Вы можете укажите свою собственную стратегию для собственности доступ, назвав класс, который реализует интерфейс org.hibernate.property.PropertyAccessor.

access="field|property|ClassName"

Источник

1 голос
/ 04 января 2011

hibernate по умолчанию использует доступ к отражающим свойствам
Я предлагаю ознакомиться с политикой безопасности системы (SecurityManager), если вы хотите получить более подробную информацию

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