Как перестать писать установщики свойств Java для BlazeDS и JPA, которые мне не нужны? - PullRequest
3 голосов
/ 06 декабря 2010

BlazeDS не будет сериализовать свойство, если у него нет и геттера, и сеттера. Однако многие из моих свойств Java доступны только для чтения. Поэтому теперь мне нужно добавить сеттеры для поддержки процесса Unmarshalling. Если кто-либо из пользователей этих доменных объектов начнет сами вызывать эти установщики, это нарушит семантику объекта-значения этих вещей и, вероятно, вызовет всевозможные системные проблемы.

В прошлом мне приходилось много делать для поддержки определенных аспектов JPA, и мне это никогда не нравилось. Это произошло потому, что мы поместили наши аннотации JPA в свойства, а не в частные поля (чтобы избежать другой проблемы).

Кроме использования Javadoc для предупреждения себя и других, что должен делать программист?

Редактировать: я должен добавить, что эти дополнительные сеттеры НЕ являются частью открытого интерфейса, который реализуют эти объекты .... но тем не менее они все еще там.

Ответы [ 2 ]

2 голосов
/ 06 декабря 2010

Вы можете попробовать использовать аннотацию @Access. Это используется для переопределения типа доступа, используемого для класса по столбцам. Это также позволяет вам связываться с вещами, когда они идут в базу данных, как это:

private String firstName;

@Access(AccessType.PROPERTY) 
@Column(name="FIRST_NAME")
protected String getFirstNameForDatabase() {
    return "Mr. " + this.firstName;
}

Этот пример не только переопределяет доступ «FIELD», используемый для класса, но также заставляет базу данных фиксироваться с префиксом «Mr.» в значении каждый раз. Это также может позволить вам объявлять «фиктивные» методы получения / установки, которые удовлетворяют другим вашим требованиям, не нарушая фиксацию и извлечение JPA. Попробуйте и посмотрите, может ли это быть использовано для решения вашей проблемы.

1 голос
/ 07 декабря 2010

У вас есть несколько вариантов: использовать свой собственный механизм сериализации или использовать BlazeDS версии 4. Я написал небольшую статью, связанную с этим, возможно, она может вам помочь.Ссылка http://cornelcreanga.com/2009/09/blazeds-amf-and-read-only-properties/.

...