如何使用hibernate插入加密数据

时间:2013-10-22 11:40:16

标签: hibernate

Hibernate提供了通过save()方法将记录插入数据库的方法。 例如: User()user = new User(int id,String name); userDAO.save(用户);

这很棒。 但是我被困在这个: 我需要执行此查询以将记录插入表用户 SQL查询:“插入用户值(”我的名字“,AES_ENCRYPT(”clear_txt“,”key“)); 例如:我的表用户有两个字段:'name'和'password'。使用某些密钥加密所需的密码。 AES_ENCRYPT是MySQL中的一个函数。

我如何以Hibernate方式执行此操作? 你如何处理用提供的密钥加密数据库中的字段的要求?

2 个答案:

答案 0 :(得分:0)

您可以在保存到数据库之前使用Java加密,或者可以使用ColumnTransformer

  

自定义SQL表达式,用于从列读取值并将值写入列。用于直接对象加载/保存以及查询。写表达式必须包含一个'?'占位符的价值。例如:read =“decrypt(credit_card_num)”write =“encrypt(?)”

答案 1 :(得分:0)

该如何使用休眠方式?您如何处理使用提供的密钥对数据库中的字段进行加密的要求?

使用MySQL的休眠方式:

//  `username` varchar(255) DEFAULT NULL,
@Column(name = "username")
@ColumnTransformer(
        read = "cast(aes_decrypt(username, 'yourkey') as char(255))", 
        write = "aes_encrypt(?, 'yourkey')")
private String username;

Hibernate会在get期间将username列的转换为sql

休眠:选择this_.id作为id1_6_4_,...,cast(aes_decrypt(this_.kronologis,'ABC')as char(1020))作为kronolo11_6_4 _,...

保存期间:

休眠:插入e010_k2_pusdalops.kejadian(... kronologis ...)值(...,aes_encrypt(?,'ABC'),...)

希望能解决您的问题。

干杯。