|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
Objectorg.jasypt.hibernate.type.EncryptedBigDecimalType
public final class EncryptedBigDecimalType
A Hibernate UserType implementation which allows transparent encryption of BigDecimal values 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="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
<param name="encryptorRegisteredName">myHibernateBigDecimalEncryptor</param>
<param name="decimalScale">2</param>
</typedef>
...
<class name="UserData" table="USER_DATA">
...
<property name="salary" column="SALARY" type="encryptedBigDecimal" />
...
<class>
...
<hibernate-mapping>
...where a HibernatePBEBigDecimalEncryptor object
should have been previously registered to be used
from Hibernate with name myHibernateBigDecimalEncryptor (see
HibernatePBEBigDecimalEncryptor and HibernatePBEEncryptorRegistry).
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="encryptedBigDecimal" class="org.jasypt.hibernate.type.EncryptedBigDecimalType">
<param name="algorithm">PBEWithMD5AndTripleDES</param>
<param name="password">XXXXX</param>
<param name="keyObtentionIterations">1000</param>
<param name="decimalScale">2</param>
</typedef>
...
<class name="UserData" table="USER_DATA">
...
<property name="address" column="ADDRESS" type="encryptedBigDecimal" />
...
<class>
...
<hibernate-mapping>
About the decimalScale parameter
The decimalScale parameter is aimed at setting the scale with which BigDecimal numbers will be set to and retrieved from the database. It is an important parameter because many DBMSs return BigDecimal numbers with a scale equal to the amount of decimal positions declared for the field (e.g. if we store "18.23" (scale=2) in a DECIMAL(15,5) field, we can get a "18.23000" (scale=5) back when we retrieve the number). This can affect correct decryption of encrypted numbers, but specifying a decimalScale parameter will solve this issue.
So, if we set decimalScale to 3, and we store "18.23", this Hibernate type will send "18.230" to the encryptor, which is the value that we will get back from the database at retrieval time (a scale of "3" will be set again on the value obtained from DB). If it is necessary, a DOWN rounding operation is executed on the number.
To learn more about usage of user-defined types, please refer to the Hibernate Reference Documentation.
| Constructor Summary | |
|---|---|
EncryptedBigDecimalType()
Deprecated. |
|
| Method Summary | |
|---|---|
Object |
assemble(java.io.Serializable cached,
Object owner)
Deprecated. |
Object |
deepCopy(Object value)
Deprecated. |
java.io.Serializable |
disassemble(Object value)
Deprecated. |
boolean |
equals(Object x,
Object y)
Deprecated. |
int |
hashCode(Object x)
Deprecated. |
boolean |
isMutable()
Deprecated. |
Object |
nullSafeGet(java.sql.ResultSet rs,
String[] names,
Object owner)
Deprecated. |
void |
nullSafeSet(java.sql.PreparedStatement st,
Object value,
int index)
Deprecated. |
Object |
replace(Object original,
Object target,
Object owner)
Deprecated. |
Class |
returnedClass()
Deprecated. |
void |
setParameterValues(java.util.Properties parameters)
Deprecated. |
int[] |
sqlTypes()
Deprecated. |
| Methods inherited from class Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public EncryptedBigDecimalType()
| Method Detail |
|---|
public int[] sqlTypes()
sqlTypes in interface org.hibernate.usertype.UserTypepublic Class returnedClass()
returnedClass in interface org.hibernate.usertype.UserType
public boolean equals(Object x,
Object y)
throws org.hibernate.HibernateException
equals in interface org.hibernate.usertype.UserTypeorg.hibernate.HibernateException
public Object deepCopy(Object value)
throws org.hibernate.HibernateException
deepCopy in interface org.hibernate.usertype.UserTypeorg.hibernate.HibernateException
public Object assemble(java.io.Serializable cached,
Object owner)
throws org.hibernate.HibernateException
assemble in interface org.hibernate.usertype.UserTypeorg.hibernate.HibernateException
public java.io.Serializable disassemble(Object value)
throws org.hibernate.HibernateException
disassemble in interface org.hibernate.usertype.UserTypeorg.hibernate.HibernateExceptionpublic boolean isMutable()
isMutable in interface org.hibernate.usertype.UserType
public int hashCode(Object x)
throws org.hibernate.HibernateException
hashCode in interface org.hibernate.usertype.UserTypeorg.hibernate.HibernateException
public Object replace(Object original,
Object target,
Object owner)
throws org.hibernate.HibernateException
replace in interface org.hibernate.usertype.UserTypeorg.hibernate.HibernateException
public Object nullSafeGet(java.sql.ResultSet rs,
String[] names,
Object owner)
throws org.hibernate.HibernateException,
java.sql.SQLException
nullSafeGet in interface org.hibernate.usertype.UserTypeorg.hibernate.HibernateException
java.sql.SQLException
public void nullSafeSet(java.sql.PreparedStatement st,
Object value,
int index)
throws org.hibernate.HibernateException,
java.sql.SQLException
nullSafeSet in interface org.hibernate.usertype.UserTypeorg.hibernate.HibernateException
java.sql.SQLExceptionpublic void setParameterValues(java.util.Properties parameters)
setParameterValues in interface org.hibernate.usertype.ParameterizedType
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||