воскресенье, 7 июня 2009 г.

полезные аннотации JPA

Вот очень полезные аннотации, при помощи которых можно реализовать java trigger
  • @PostLoad
  • @PrePersist
  • @PostPersist
  • @PreUpdate
  • @PostUpdate
  • @PreRemove
  • @PostRemove
например:


@Entity
public class Human implements Serializable {
...
@Basic
@Column
private String hello;
...
public String getHello() {
return hello;
}
public void setHello(String hello) {
this.hello = hello;
}
...
@PrePersist
@PreUpdate
private void preModify () {
hello = hello.trim().toLowerCase();
}
...
}

Если в @Entity перед каким-либо полем установить аннотацию @Transient, то это поле не будет добавляться в хранилище при вызове em.persist(entity);
Бывает полезно если в entity есть какие то рабочие поля, которые не представляют ни какого поля в хранилище данных, но нужны для реализации бизнес логики приложения

2 комментария:

  1. Даниил, а что если сеттеров и геттров нет. И никакой специальной аннотацииу поля нет. Как будет происходить диалог с базай в этом случае?

    ОтветитьУдалить
  2. сегодня проверил - добавл в entity поле:

    private String testField = "asd";

    после того как попытался сделать persist того объекта, у которого есть это поле - получил исключение javax.persistence.PersistenceException:

    ERROR: колонка "testField" для связи "table111" не существует

    ОтветитьУдалить