java - 如何配置Hibernate @Type注释的属性

标签 java spring hibernate jasypt

在我的应用程序中,我启用了 jasypt使用@Type注释进行加密。但是,当我需要在没有任何加密的情况下部署应用程序时,我必须按以下方式更改 @Type 注释的属性。目前我正在手动进行此操作。有什么方法可以使其可配置(根据配置值拾取@Type注释的属性)?谢谢。

@Entity
@Table 
public class Data {

  @Id
  private Integer id;

  @Type(type = "encryptedString") // Need to enable for Encryption 
  @Type(type = "org.hibernate.type.TextType") // Need to enable for Non Encryption 
  private String data;
}

最佳答案

通过使用“JPA 实体生命周期回调方法”,我将加密和解密作为可配置参数进行处理。 现在Hibernate不负责加密和解密,应用程序相关的DTO本身显式地进行加密和解密相关的操作。

@Entity
@Table 
public class Data {

  @Id
  private Integer id;

  @Type(type = "org.hibernate.type.TextType")
  private String data;

  // Before Persist or Update to Database
  @PrePersist
  @PreUpdate
  void beforePersistOrUpdate () {

      // Do encrypt
      if(ProjectProperty.isEncryptionEnabled) {
          this.data = ServiceUtil.commonService.doEncryptString(this.data);
      } 
  }

  // Before Load from Database
  @PostLoad
  void beforeLoad() {

      // Do Decrypt
      if(ProjectProperty.isEncryptionEnabled) {
          this.data = ServiceUtil.commonService.doDecryptString(this.data);
      }
  }
}

关于java - 如何配置Hibernate @Type注释的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39120410/

相关文章:

hibernate - hibernate 缓存保存了什么?

java - 是否应该更改 hibernate 生成的代码以满足需要?

java - 如何阻止 Hibernate 发送垃圾邮件日志

java - 使用反射调用方法时 int 和 Integer 参数的区别

java - 多重矩形生成

java - 为什么我不能使用 FileInputStream 来提供 MessageDigest 对象?

Spring:在同一个类中定义和连接一个 bean

java - 从 hashmap 中检索值并将它们添加到字符串中

java - RequestContextHolder 是线程安全的吗?

java - Spring JPA - 如何在事务中强制自定义存储库调用顺序