gpt4 book ai didi

java - 从数据库获取数据时解密

转载 作者:行者123 更新时间:2023-12-01 12:08:24 24 4
gpt4 key购买 nike

我正在使用 Hibernate 开发 Spring MVC 项目。我有一个表,其中一些列具有加密数据。每当我想要获取数据(唯一结果或列表)时,我必须循环数据并执行解密逻辑,然后再次设置到模型/实体中。

目前我们正在做这样的事情:

            query = session.createSQLQuery("SELECT C.* FROM CITY C");
query.addEntity(City.class);
List<City> list = query.list();
for (City city : list)
{
city.setName(AESHelper.decrypt(city.getName(), "key"));
}

我们可以在 Hibernate 中使用一些东西,当 Hibernate 将数据转换为实体时,我们可以应用这样的逻辑,我们可以使用 ResultTransformer 来实现这一点吗?

最佳答案

毫无疑问,您可以使用 ResultTransformer。但是,如果您有很多需要此的列/实体,则使用 Hibernate Interceptors

在您的示例中,使用如下所示的自定义注释来注释 name

City {
@CustomAnnotation(decrypt = true)
private String name;
..
}

在拦截器中,当加载数据时,检查此自定义注释的实体属性。如果它设置为 true 则解密它。

这种方法是非侵入性的。

Example

更新:结果转换器

sess.createSQLQuery("SELECT name from City where name like 'xxyy'")
.setResultTransformer(new ResultTransformer(){
Object transformTuple(Object[] tuple, String[] aliases){
// assign each tuple value to your object and return
}

})

关于java - 从数据库获取数据时解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27408211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com