Выполнение метода перед сохранением модели в Play Framework 1.x

Как выполнить метод непосредственно перед сохранением модели?

Например, хеширование паролей в пользовательской модели.

Аннотации @Before для моделей не существует.

Я использую PlayFramework 1.2.x

PS: я планирую использовать его с модулем CRUD.


person Gautam    schedule 20.05.2012    source источник
comment
Вы ищете обратные вызовы JPA @PrePersist?   -  person Ahamed Mustafa M    schedule 20.05.2012
comment
@AhamedMustafaM: Да, но мне не нужно что-то настолько сложное. Просто выполните метод, а затем сохраните .   -  person Gautam    schedule 20.05.2012


Ответы (1)


Ознакомьтесь с коллекцией Pre* аннотаций в JPA. Например, PrePersist и PreUpdate.

В вашей модели просто вставьте нужную аннотацию в метод, который вы хотите вызвать.

@PrePersist
public void hashPassword(){
    // do stuff
}

Другим вариантом может быть переопределение метода save() для конкретной модели, но я бы не стал этого делать, если в этом нет крайней необходимости. Я бы придерживался API-интерфейсов JPA, если они предлагают решение, но это только мое мнение.

person Jeremy    schedule 20.05.2012
comment
На самом деле я провел некоторое исследование после того, как вы упомянули о переопределении save(). Как оказалось, переопределение save() не такая уж плохая идея, потому что он вызывает _save(), который содержит реальную бизнес-логику, см. stackoverflow.com/a/5419083/492561 - person Gautam; 20.05.2012
comment
Хороший. Я добавлю ссылку в свой ответ для полноты. - person Jeremy; 20.05.2012