Hibernate字段数据加密

2016/01/19 15:12
阅读数 1.9K
  • 介绍
本文介绍如何利用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
展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部