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

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

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

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

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

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

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

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

Но сейчас считается правильно модель без кода вообще, так что выбор- исходя из чувства прекрасного разработчика :)
...
Рейтинг: 0 / 0
27.04.2015, 12:52
    #38946105
Pavel Kurakin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
BlazkowiczAFAIK доступ к свойству будет отличаться - либо через аккцессоры, либо рефлексией сразу в поле.
Я вот это проверил экспериментальным путем. В любом случае доступ будет через аккцессоры.
Так что имхо все равно.
...
Рейтинг: 0 / 0
27.04.2015, 12:56
    #38946110
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
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
27.04.2015, 13:33
    #38946151
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
Pavel KurakinBlazkowiczAFAIK доступ к свойству будет отличаться - либо через аккцессоры, либо рефлексией сразу в поле.
Я вот это проверил экспериментальным путем. В любом случае доступ будет через аккцессоры.
Так что имхо все равно.

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

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

Blazkowicz, скажите, где Вы такие ссылки на документацию берете? С hibernate.org я не нашел как туда попасть.
...
Рейтинг: 0 / 0
28.04.2015, 20:25
    #38947843
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
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
29.04.2015, 16:49
    #38948843
Pavel Kurakin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
BlazkowiczВ гугле. Ссылку привел. Что не так?
Да все так. В вопросе не было никакого сарказма и я вижу где документация хостится.
BlazkowiczНу, вот открой ссылку на мануал с hibernate.org, и, о чудо! Она хостится на docs.jboss.org
Вот, для 4ки
Да, действительно Вы правы. Значит я не очень внимательно искал.
Однако это не отменяет моего мнения. Я только что проверил, все аннотации стоят перед полями, а доступ все равно идет через геттер.
...
Рейтинг: 0 / 0
29.04.2015, 17:08
    #38948884
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
Pavel Kurakin,
в приведенной цитате речь идет только про ключи. Скорее всего, доступ к полям унифицирован - через акцессоры, поэтому тут нет противоречия.
Рыться в коде неохота, можно просто сделать логическое заключение: аннотации - это всего лишь метаданные, так же, как и XML. При меппинге с помощью XML работа идет через акцессоры, какой смысл городить отдельное поведение для аннотаций?
...
Рейтинг: 0 / 0
29.04.2015, 17:12
    #38948889
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
ivanra в приведенной цитате речь идет только про ключи.
Не совсем. Речь о том что расположение аннотаций @Id и @EmbeddedId определяет способ доступа к состоянию сущности. А не только к свойству id.
...
Рейтинг: 0 / 0
29.04.2015, 17:13
    #38948892
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
Pavel KurakinОднако это не отменяет моего мнения. Я только что проверил, все аннотации стоят перед полями, а доступ все равно идет через геттер.
Версия Hibernate?
...
Рейтинг: 0 / 0
29.04.2015, 17:21
    #38948900
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
Blazkowiczivanra в приведенной цитате речь идет только про ключи.
Не совсем. Речь о том что расположение аннотаций @Id и @EmbeddedId определяет способ доступа к состоянию сущности. А не только к свойству id.
Точно. Если прокрутить ниже, то там подробне про это, а также можно найти и про кастомизацию для отдельных полей:
Код: java
1.
@Access(AccessType.PROPERTY)
...
Рейтинг: 0 / 0
30.04.2015, 04:46
    #38949158
пролетевший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
rema174если я правильно понял, то если нужно что-то провернуть в сеттере, то удобнен способ с сеттером
Наоборот. Если используется доступ через методы, то они могут быть только тупыми getter/setter. Если хибер получит из геттера не то что положил, эффект может быть непредсказуем. в лучшем случае будет ненужное обновление в базе.
...
Рейтинг: 0 / 0
30.04.2015, 14:52
    #38949761
Pavel Kurakin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
BlazkowiczВерсия Hibernate?
4.2.16.Final
...
Рейтинг: 0 / 0
05.05.2015, 15:34
    #38951875
Pavel Kurakin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate: аннотации на свойстве или на методе
Все, что я писал выше, прошу считать наглым враньем, потому что я олень. :)
Нашел место где я поле меняю (прочитав его через геттер) прямо перед тем как хибер будет save делать. Так что да, если аннотация перед полем, то геттер не сработает.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate: аннотации на свойстве или на методе / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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