在插入表之前清理数据

时间:2017-03-23 02:21:41

标签: java spring hibernate jpa

我的JPA实体如下所示。

Employee{

String name;

String address;

String phoneNumber;

Date  joiningDate;

boolean isActive;

}

我看到我们在表中插入了错误的数据用于地址,名称就像坏字符\ u000b这是新行字符。我想在插入之前一般性地处理这个数据以清理数据。 我想在dao层处理,因为这从很多地方被调用,因此想要在一个中心位置处理。像AOP这样的东西 我在做

employeeDao.save(employee);

然后执行employee.merge();

3 个答案:

答案 0 :(得分:1)

您可以将使用@PrePersist或@PreUpdate注释的方法添加到您的实体以清理数据。在每次插入或更新之前,将自动调用此方法。

import javax.persistence.Entity;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;

@Entity
public class MyEntity{

   @PrePersist
   @PreUpdate
   private void cleanup() {
       ...correct your data here...
   }
}

答案 1 :(得分:1)

dao / domain层不负责验证数据,而是演示和/或业务层。因此,检查客户端或业务层中的一个控制器上的数据,然后使用经过验证的数据调用域层(或抛出EInvalidXXXX异常)

答案 2 :(得分:0)

您无需在代码中处理此逻辑,hibernate可以为您执行此操作。在hbm2ddl.auto中将create属性设置为hibernate.cfg.xml,hibernate将在每次运行应用程序时删除现有表并创建一个新表。如果您不想再创建新表,请将该属性设置为update,hibernate将在表中附加数据。

<property name="hbm2ddl.auto">create</property>