Для чего AccessType.FIELD и AccessType.PROPERTY в @Access?

206
26 ноября 2018, 05:50

Для чего эти аннотации, и какие плюсы и минусы AccessType.FIELD и AccessType.PROPERTY. Объясните пожалуйста.

Answer 1

Habr:

@Access нужна для определения типа доступа (access type) для класса entity, суперкласса, embeddable или отдельных атрибутов, то есть как JPA будет обращаться к атрибутам entity, как к полям класса (FIELD) или как к свойствам класса (PROPERTY), имеющие гетеры (getter) и сетеры (setter).

Если вы хотите, чтобы ваши поля были доступны как обычные поля, но есть одно поле, для доступа к которому вы хотите использовать геттер или сеттер, вы можете предоставить аннотацию @Access. Эта аннотация имеет два режима: AccessType.FIELD и AccessType.PROPERTY. Мы можем явно указать тип доступа, используя AccessType.PROPERTY или AccessType.FIELD в @Access аннотации. Мы можем использовать @Access на уровне класса, поля или метода. Мы можем даже смешивать два типа в одном классе сущностей.

Перевод ответа с ответа с enSO:

По умолчанию тип доступа определяется местом, в котором находится ваш идентификатор(@ Id). Если он будет в поле - это будет AccessType.FIELD, если он будет в геттере - это AccessType.PROPERTY.

Иногда вам может потребоваться аннотировать не поля, а свойства (например, потому что вы хотите иметь какую-то произвольную логику в геттере или потому, что вы так предпочитаете). В такой ситуации вы должны определить геттер и аннотировать его как AccessType.PROPERTY.

Обобщение: вы можете использовать аннотацию AccessType.FIELD для 'обычного' доступа к полю, и аннотацию AccessType.PROPERTY для доступа к полю через get/set.

READ ALSO
NotificationListenerService иногда перестает работать

NotificationListenerService иногда перестает работать

Не знаю при каких условиях, но иногда перестает работать мой сервис по отлову уведомленийВот код:

164
Чем можно заменить JavaFX

Чем можно заменить JavaFX

Прочитал о изменениях в java и немного испугалсяОдно из нововведений будет удаление JavaFX, как я понял удаление полное

183
Не могу протестировать Swing GUI c помощью AssertJ

Не могу протестировать Swing GUI c помощью AssertJ

Не могу протестировать GUI в своем приложении с помощью библиотеки AssertJЧтоб не выкладывать весь код своей программы, написал тестовую программу,...

179