Class EncryptedCalendarAsStringType

Object
org.jasypt.hibernate6.type.AbstractEncryptedAsStringType
org.jasypt.hibernate6.type.EncryptedCalendarAsStringType
All Implemented Interfaces:
org.hibernate.usertype.ParameterizedType, org.hibernate.usertype.UserType

public final class EncryptedCalendarAsStringType extends AbstractEncryptedAsStringType
A Hibernate UserType implementation which allows encryption of Calendar values into String (VARCHAR) database fields during persistence of entities.

This class is intended only for declarative use from a Hibernate mapping file. Do not use it directly from your .java files (although of course you can use it when mapping entities using annotations).

To use this Hibernate type in one of your Hibernate mappings, you can add it like this:

  <hibernate-mapping package="myapp">
    ...
    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
      <param name="encryptorRegisteredName">myHibernateStringEncryptor</param>
      <param name="storeTimeZone">true</param>
    </typedef>
    ...
    <class name="UserData" table="USER_DATA">
      ...
      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
      ...
    <class>
    ...
  <hibernate-mapping>
 

...where a HibernatePBEStringEncryptor object should have been previously registered to be used from Hibernate with name myHibernateStringEncryptor (see HibernatePBEStringEncryptor and HibernatePBEEncryptorRegistry).

The boolean storeTimeZone parameter allows the Calendar to be re-created with the same TimeZone that it was created. This is an optional parameter, and its default value is FALSE.

Or, if you prefer to avoid registration of encryptors, you can configure your encryptor directly in the mapping file (although not recommended), like this:

  <hibernate-mapping package="myapp">
    ...
    <typedef name="encryptedCalendarAsString" class="org.jasypt.hibernate.type.EncryptedCalendarAsStringType">
      <param name="algorithm">PBEWithMD5AndTripleDES</param>
      <param name="password">XXXXX</param>
      <param name="keyObtentionIterations">1000</param>
      <param name="storeTimeZone">true</param>
    </typedef>
    ...
    <class name="UserData" table="USER_DATA">
      ...
      <property name="birth" column="BIRTH" type="encryptedCalendarAsString" />
      ...
    <class>
    ...
  <hibernate-mapping>
 

To learn more about usage of user-defined types, please refer to the Hibernate Reference Documentation.

Since:
1.9.0
Author:
Chus Picos