Java 在插入表之前清除数据

Java 在插入表之前清除数据,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有我的JPA实体,如下所示 Employee{ String name; String address; String phoneNumber; Date joiningDate; boolean isActive; } 我发现我们在表中插入了地址、名称等错误数据,如错误字符\u000b,这是新行字符。我希望在插入之前进行一般处理以清除数据。 我想在dao层中处理,因为这是从许多地方调用的,因此需要在一个中心位置处理 我在做什么 employeeDao.save(employe

我有我的JPA实体,如下所示

Employee{

String name;

String address;

String phoneNumber;

Date  joiningDate;

boolean isActive;

}
我发现我们在表中插入了地址、名称等错误数据,如错误字符\u000b,这是新行字符。我希望在插入之前进行一般处理以清除数据。 我想在dao层中处理,因为这是从许多地方调用的,因此需要在一个中心位置处理 我在做什么

employeeDao.save(employee);

然后执行
employee.merge()

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

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

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

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

您可以在实体中添加一个带有@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...
   }
}

您可以向实体添加一个带有@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...
   }
}

验证数据不是dao/域层的责任,而是表示层和/或业务层的责任。因此,从业务层检查客户机或其中一个控制器上的数据,只需使用已验证的数据调用域层(或抛出EINValidxxx异常)

这不是dao/域层验证数据的责任,而是表示层和/或业务层的责任。因此,从业务层检查客户机或其中一个控制器上的数据,只需使用已验证的数据调用域层(或引发EInvalidXXXX异常)

可能会看到“谢谢”,但用户可能会从REST API输入错误的值,而且有许多入口点,因此我觉得最好在后端进行清理。是否要删除所有现有记录并每次以新记录的形式插入?或者您只想删除您提到的特定不良记录?或者寻找不插入坏字符的东西?我不想删除,我只想在插入到表中之前去掉这些字符。是否有任何aop建议我可以这样做?通常请参阅,谢谢,但用户可能从REST API输入错误的值。还有许多入口点,所以我觉得最好在后端进行清理。是否要是否每次都删除所有现有记录并作为新记录插入?或者您只想删除您提到的特定不良记录?或者寻找不插入坏字符的东西?我不想删除,我只想在插入到表中之前去掉这些字符。有什么aop建议我可以在泛型中这样做吗