powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: аннотации на свойстве или на методе
20 сообщений из 20, страница 1 из 1
Hibernate: аннотации на свойстве или на методе
    #38945161
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В чем разница, устанавливать анотации хайбернейта на свойстве или на геттере?
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38945163
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,

AFAIK доступ к свойству будет отличаться - либо через аккцессоры, либо рефлексией сразу в поле.
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38945168
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. работать-то все равно будет одинаково?
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38945170
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174т.е. работать-то все равно будет одинаково?
А какие есть варианты?
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38945806
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174т.е. работать-то все равно будет одинаково?

Нет. setter же может сделать что-то своё.
Можно даже сделать поле, которое будет "знать" только хибернейт, а в объекте вообще не будет для него одного поля. Хотя это изврат...
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38945891
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tominrema174т.е. работать-то все равно будет одинаково?
Нет. setter же может сделать что-то своё.

если я правильно понял, то если нужно что-то провернуть в сеттере, то удобнен способ с сеттером
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38945917
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Alexey Tominпропущено...

Нет. setter же может сделать что-то своё.

если я правильно понял, то если нужно что-то провернуть в сеттере, то удобнен способ с сеттером

Главное- делать во всём проекте одинаково.

А как выбирать- тут вопрос в том, что есть класс модели данных. Только ли данные (тогда без разницы), либо всё же он что-то делает- например хранит данные немного не так, как в БД (тогда только на методы), или может при установки одного поля бизнес-логикой менять другое- тогда на поля.

Но сейчас считается правильно модель без кода вообще, так что выбор- исходя из чувства прекрасного разработчика :)
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38946105
Pavel Kurakin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAFAIK доступ к свойству будет отличаться - либо через аккцессоры, либо рефлексией сразу в поле.
Я вот это проверил экспериментальным путем. В любом случае доступ будет через аккцессоры.
Так что имхо все равно.
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38946110
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel KurakinЯ вот это проверил экспериментальным путем. В любом случае доступ будет через аккцессоры.
Так что имхо все равно.
У меня есть подозрение что вы где-то заблуждаетесь.

https://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/ Depending on whether you annotate fields or methods, the access type used by Hibernate will be field or property. The EJB3 spec requires that you declare annotations on the element type that will be accessed, i.e. the getter method if you use property access, the field if you use field access. Mixing annotations in both fields and methods should be avoided. Hibernate will guess the access type from the position of @Id or @EmbeddedId.
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38946151
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel KurakinBlazkowiczAFAIK доступ к свойству будет отличаться - либо через аккцессоры, либо рефлексией сразу в поле.
Я вот это проверил экспериментальным путем. В любом случае доступ будет через аккцессоры.
Так что имхо все равно.

Я тоже проверял- был именно проект, где setter'ы содержали дополнительный код. Не вызывалось. Всё через аннотации, jboss 6.x
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38947752
Pavel Kurakin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczУ меня есть подозрение что вы где-то заблуждаетесь.
Очень может быть, но тем не менее при указании аннотации перед полем, вполне успешно выполняются действия описанные в геттере.

Что касается разницы, она есть для hibernate validator, и это действительно описано в документации. А вот в документации по hibernate orm (той на которую можно попасть с hibernate.org) я такого не нашел.

Blazkowicz, скажите, где Вы такие ссылки на документацию берете? С hibernate.org я не нашел как туда попасть.
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38947843
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel KurakinBlazkowicz, скажите, где Вы такие ссылки на документацию берете?

В гугле. Ссылку привел. Что не так?

Pavel KurakinС hibernate.org я не нашел как туда попасть.
Ну, вот открой ссылку на мануал с hibernate.org, и, о чудо! Она хостится на docs.jboss.org
Вот, для 4ки
http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#mapping-declaration-property By default the access type of a class hierarchy is defined by the position of the @Id or @EmbeddedId annotations. If these annotations are on a field, then only fields are considered for persistence and the state is accessed via the field. If these annotations are on a getter, then only the getters are considered for persistence and the state is accessed via the getter/setter. That works well in practice and is the recommended approach.

Ссылки на мануал от вас мы пока не видели.
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38948843
Pavel Kurakin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВ гугле. Ссылку привел. Что не так?
Да все так. В вопросе не было никакого сарказма и я вижу где документация хостится.
BlazkowiczНу, вот открой ссылку на мануал с hibernate.org, и, о чудо! Она хостится на docs.jboss.org
Вот, для 4ки
Да, действительно Вы правы. Значит я не очень внимательно искал.
Однако это не отменяет моего мнения. Я только что проверил, все аннотации стоят перед полями, а доступ все равно идет через геттер.
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38948884
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel Kurakin,
в приведенной цитате речь идет только про ключи. Скорее всего, доступ к полям унифицирован - через акцессоры, поэтому тут нет противоречия.
Рыться в коде неохота, можно просто сделать логическое заключение: аннотации - это всего лишь метаданные, так же, как и XML. При меппинге с помощью XML работа идет через акцессоры, какой смысл городить отдельное поведение для аннотаций?
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38948889
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra в приведенной цитате речь идет только про ключи.
Не совсем. Речь о том что расположение аннотаций @Id и @EmbeddedId определяет способ доступа к состоянию сущности. А не только к свойству id.
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38948892
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel KurakinОднако это не отменяет моего мнения. Я только что проверил, все аннотации стоят перед полями, а доступ все равно идет через геттер.
Версия Hibernate?
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38948900
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczivanra в приведенной цитате речь идет только про ключи.
Не совсем. Речь о том что расположение аннотаций @Id и @EmbeddedId определяет способ доступа к состоянию сущности. А не только к свойству id.
Точно. Если прокрутить ниже, то там подробне про это, а также можно найти и про кастомизацию для отдельных полей:
Код: java
1.
@Access(AccessType.PROPERTY)
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38949158
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174если я правильно понял, то если нужно что-то провернуть в сеттере, то удобнен способ с сеттером
Наоборот. Если используется доступ через методы, то они могут быть только тупыми getter/setter. Если хибер получит из геттера не то что положил, эффект может быть непредсказуем. в лучшем случае будет ненужное обновление в базе.
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38949761
Pavel Kurakin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВерсия Hibernate?
4.2.16.Final
...
Рейтинг: 0 / 0
Hibernate: аннотации на свойстве или на методе
    #38951875
Pavel Kurakin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, что я писал выше, прошу считать наглым враньем, потому что я олень. :)
Нашел место где я поле меняю (прочитав его через геттер) прямо перед тем как хибер будет save делать. Так что да, если аннотация перед полем, то геттер не сработает.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: аннотации на свойстве или на методе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]