Hibernate字段数据加密

  • 介绍
本文介绍如何利用Hibernate的事件机制实现实体字段数据的透明加解密。 上面的话有点绕,这里简单说一下思路:通过在实体类(Entity)的属性上添加注解,实现该字段在存取时的数据加解密。这里利用了Hibernate提供的几个Listener来实现,包括:pre-insert、post-insert、post-load。 我们的步骤是:在数据入库前进行加密操作,在从数据库查出来后解密。
  • 例子
[codesyntax lang="java"]
/**
* Copyright © 1998-2015, surenpi.com. All Rights Reserved.
*/
package org.suren.hibernate.po;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.hibernate.annotations.GenericGenerator;
import org.suren.hibernate.annotation.Encrypt;

/**
 * @author suren
 * @since jdk1.6
 * 2015年11月23日
 */
@Entity
public class Student {
	@Id
	@GenericGenerator(name = "generator", strategy = "uuid.hex")
	@GeneratedValue(generator = "generator")
	private String id;
	@Encrypt
	private String name;
	private String room;
	private String location;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getRoom()
	{
		return room;
	}
	public void setRoom(String room)
	{
		this.room = room;
	}
	public String getLocation()
	{
		return location;
	}
	public void setLocation(String location)
	{
		this.location = location;
	}
	@Override
	public String toString()
	{
		return "Student [id=" + id + ", name=" + name + ", room=" + room
				+ ", location=" + location + "]";
	}
}
[/codesyntax]
  • 源码
本文涉及的源码可以从这里check出来:svn://surenpi.com/project/hibernate/org.suren.hibernate
  • Maven
[codesyntax lang="xml"]
<groupId>org.suren.hibernate</groupId>
<artifactId>hibernate-encrypt</artifactId>
<version>0.0.1-SNAPSHOT</version>
[/codesyntax]
  • 参考
http://blog.csdn.net/pingnanlee/article/details/41866335 http://blog.csdn.net/ljhabc1982/article/details/6319251

转载于:https://my.oschina.net/surenpi/blog/604889

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值