`
jonny.xu
  • 浏览: 12555 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JPA调用函数加密解密password字段

阅读更多
    在我们使用JPA时,经常会遇到在存取或读取数据库中某一字段的时候需要加密或者解密,例如 password 字段。

    Hibernate 框架允许我们自定义一些 sql 表达式来存取和读取列值,方法如下:

import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.hibernate.annotations.ColumnTransformer;
import org.hibernate.annotations.GenericGenerator;

@XmlRootElement
@Entity
@Cacheable
@Table(name = "USER")
public class User {

	@Id
	@GeneratedValue(generator = "increment")
	@GenericGenerator(name = "increment", strategy = "increment")
	@Column(name = "ID")
	private int id;

	@Column(name = "NAME")
	private String name;

	@Column(name = "PASSWORD")
	@ColumnTransformer(
			read = "decrypt(PASSWORD)",
			write = "encrypt(nvl(?, 'null'))"
	)
	private String password;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public String toString() {
		return ReflectionToStringBuilder.toString(this);
	}
}
分享到:
评论

相关推荐

    一个数据加密解密算法

    哈希函数不是用来加密和解密,而是将任意长度的数据转化为固定长度的摘要,具有不可逆性,常用于数据完整性校验和密码存储。 在实际应用中,加密技术广泛应用于网络通信(如HTTPS)、数据存储(如硬盘加密)、文件...

    EJB3JPA调用原生SQL和函数存储过程[归类].pdf

    本篇主要探讨如何在EJB3与JPA环境中调用原生SQL查询以及如何创建和使用Oracle的存储过程。 1. EJB3与JPA调用原生SQL EJB3引入了JPA作为标准的数据持久化框架,允许开发者使用JPQL(Java Persistence Query ...

    JPA实体映射对时间字段的处理

    ### JPA实体映射对时间字段的处理 在Java持久化框架中,JPA(Java Persistence API)是一种广泛采用的标准,用于管理关系型数据库中的对象/关系映射。本文将详细探讨在使用JPA进行实体映射时如何处理时间字段,并...

    JPA save()方法将字段更新为null的解决方案

    "JPA save()方法将字段更新为null的解决方案" JPA(Java Persistence API)是一种Java应用程序接口,用于访问、持久化和管理Java对象之间的关系数据库。save()方法是JPA中的一种常用方法,用于将Java对象保存到...

    EclipseLink通过JPA方式映射Sdo_geometry字段

    本文将详细解释如何通过EclipseLink和JPA来映射和操作SDO_GEOMETRY字段。 首先,为了能够在EclipseLink中处理SDO_GEOMETRY字段,你需要引入Oracle提供的特定jar包,这些包包含了处理Oracle空间数据类型的类和接口。...

    解决 Springboot Jpa 自动创建表 和字段乱序问题[凤凰小哥哥]

    产生原因:因为使用 jpa 自动创建表的时候,采用的是TreeMap的,我们要变成LinkedHashMap 的结构。 解决方案:在项目下java文件夹下创建包名为: org.hibernate.cfg ,创建类: PropertyContainer [包名,类名...

    05_JPA详解_日期_枚举等字段类型的JPA映射.zip

    本资料主要针对JPA在处理日期、枚举等特殊字段类型时的映射进行深入解析。 ### 1. JPA基本概念 JPA通过提供一套API和元数据接口,允许开发人员将对象模型与关系数据库的表结构进行映射,从而简化了数据库操作。它...

    Spring Data JPA调用存储过程实例代码

    Spring Data JPA 提供了调用存储过程的能力,使得在Java应用中使用存储过程变得方便。 1. **存储过程** 存储过程是数据库中预编译的SQL语句集合,可以接受参数并返回结果。在本例中,我们有 `test_pkg` 包下的两个...

    JPA注解@Access实例

    但是,使用PROPERTY策略,JPA会调用`setPassword`方法,使得加密得以执行。 理解`@Access`的使用不仅有助于提高代码的可维护性和灵活性,还能避免潜在的问题。例如,有时字段可能包含 transient 或 static 关键字,...

    Spring Data Jpa – 获得实体类部分字段(单表或多表)

    一、单表查询的一个字段、一条数据 @Query(value = select username from user,nativeQuery = true) // 注意返回值用String类型接收,也可以使用Object String findOneUserName(); 二、单表查询的一个字段、多条...

    06_传智播客JPA详解_大数据字段映射与字段延迟加载

    在这个"06_传智播客JPA详解_大数据字段映射与字段延迟加载"的自学视频中,我们将会深入探讨两个关键概念:大数据字段的映射和字段的延迟加载。 首先,让我们来理解大数据字段映射。在数据库中,有些字段可能包含...

    05_传智播客JPA详解_日期_枚举等字段类型的JPA映射

    本课程"05_传智播客JPA详解_日期_枚举等字段类型的JPA映射"深入讲解了JPA在处理特定字段类型,如日期和枚举时的映射方法。以下是关于JPA和这些特定字段类型映射的详细知识: 1. **JPA基础**: JPA通过提供API和...

    JPA主键策略(针对数据库自增字段重置后无效检查项)

    这种策略对应MYSQL的uuid()函数,SQL Server的newid()函数,ORACLE的rawtohex(sys_guid())函数等。 uuid.hex uuid.hex是一种基于uuid的主键生成策略。这种策略和uuid策略类似,但建议使用uuid替换。 在JPA中,...

    jpa例子jpajpa

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...

    springboot基础函数调用小方法

    本文将深入探讨"springboot基础函数调用小方法"这一主题,包括Spring Boot的基础概念、核心组件以及如何进行简单的函数调用。 1. **Spring Boot基础**: - **起步依赖(Starters)**:Spring Boot通过引入起步依赖...

    JPA视频教程_使用jpa映射单个实体对象

    通过学习本教程,你将掌握如何使用JPA的注解来定义实体、映射字段和关系,并了解如何在Spring框架中配置和使用JPA进行数据操作。这将帮助你在实际项目中更高效地处理数据库交互,降低业务逻辑和数据访问层的耦合。

    spring date jpa

    Spring Data JPA是Spring框架的一个模块,用于简化Java Persistence API(JPA)的使用,它提供了与数据库交互的高级抽象。在Spring应用中整合Spring Data JPA,可以极大地提高开发效率,减少大量的DAO层代码。下面...

    db2jpa:基于数据库表和字段“备注”属性的逆向工程策略

    基于备注的从数据库到 JPA 实体的逆向工程描述基于数据库表和字段的“备注”属性的逆向工程策略。 应用于备注的转换规则是: +------------+----------------+-------------------+| Remark | Table to class | ...

    使用SpringBoot-JPA进行自定义保存及批量保存功能

    在上面的例子中,我们成功地使用JPA调用了mysql函数将对象存储到数据库中。但是,如果我们想批量保存呢?如何使用@Query注解来实现批量保存? 一种可能的解决方案是使用@Query注解来定义一个批量保存方法: ```...

    JPA中文解释,JPA的API

    3. JPA注解的全面介绍,包括如何使用它们来定义实体类、字段属性以及关系映射。 4. Oracle数据库与JPA的集成,包括驱动配置、数据源设置等。 5. 使用JPA进行CRUD(创建、读取、更新、删除)操作的示例。 6. JPQL查询...

Global site tag (gtag.js) - Google Analytics