JBoss中的JPA - Hibernate自定义字段类型配置

时间:2015-03-02 02:53:47

标签: hibernate jpa jasypt

我使用基于注释的实体。我想使用jasypt加密数据类型。

我找不到任何明确指出如何配置它们的内容。我的persistance.xml只引用了一个数据源 - 没有特定于hibernate的配置。

有没有关于如何实现这一目标的文件?

1 个答案:

答案 0 :(得分:-1)

首先,用a定义加密类型 @TypeDef注释,可以在持久化实体内部 类或在单独的@TypeDefs声明中 package-info.java文件:

@TypeDef(
    name="encryptedString", 
    typeClass=EncryptedStringType.class, 
    parameters= {
        @Parameter(name="encryptorRegisteredName", value="myHibernateStringEncryptor")
    }
)

...然后简单地用已经声明的类型映射属性:

   @Type(type="encryptedString")
    public String getAddress() {
        return address;
    }

为Hibernate提供加密器 myHibernateStringEncryptor,这可以用两种不同的方式绑定,具体取决于我们是否使用像Spring这样的IoC容器。

使用Spring

    <bean id="hibernateStringEncryptor"
        class="org.jasypt.hibernate4.encryptor.HibernatePBEStringEncryptor">
        <property name="registeredName">
            <value>strongHibernateStringEncryptor</value>
        </property>
        <property name="algorithm">
            <value>PBEWithMD5AndTripleDES</value>
        </property>
        <property name="password">
        <value>jasypt</value>
    </property>
  </bean>

没有春天,

StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor();
  HibernatePBEEncryptorRegistry registry =
      HibernatePBEEncryptorRegistry.getInstance();
  registry.registerPBEStringEncryptor("strongHibernateStringEncryptor", strongEncryptor);

Documentation here