目前我们的网站项目需要匿名化部分数据。
(例如,像432-55-1111这样的安全号码可能显示为432-55- * *) 这些数据可能包含电子邮件,身份证,价格,日期等。
Web项目动态蒙版数据
需要被屏蔽的表格名称和列被保存在数据库中。
我们使用spring security来判断用户他是否可以看到数据。
数据域对象(CMP)可以从SQL或JPQL(名为query或native query)或JPA Load方法或Mainframe中获取。
我们需要找到一个最有效的方式(而不是DB端)来动态地屏蔽这些数据。
如果我们在EJB方法结束时使用拦截器,我们需要注释所有对象(DTO) 和所有列。这可能是低效率。
任何机构知道如何在完成SQL执行和命名查询(本机查询)执行时调用方法(如拦截器),并且我们可以调用一个方法来屏蔽查询和用户标识的结果。
或其他方式。
如果将其设置在最低级别,这将是一件好事,因此其他应用程序(如报表)不需要单独的解决方案。
我们的项目架构是JSF + Spring + EJB 3.0 + JPA 1.0。
我们有很多网络项目。
对于JPA,一些使用EclipseLink 2.2的项目,一些使用Hibernate。
更新: 有关我们项目的更多信息。我们有很多关于不同功能的web项目。所以我们有许多与它们相关的ejb项目。下面的ejb每一个具有DAO通过调用JPQL得到他们的CMP或得到(类的PrimaryKey)metod.Like:
Query query = em.createNamedQuery(XXXCMP.FIND_XXX_BY_NAME);
query.setHint(QueryHints.READ_ONLY, HintValues.TRUE);
query.setParameter("shortName", "XXX").getSingleResult();
或者
XXXCMP screen = entityManager.find(XXXCMP.class, id);
新的EJB服务代码转换器transfrom从数据CMP到DTO。
如下的转换器:
/**
* Convert to CMP.
*
*/
CMP convertToCMP(DTO dto, EntityManager em);
/**
* Convert CMP to domain object with all fields populated, the default scenario is
* <code>EConvertScenario.Detail</code>.
*
*/
DTO convertFromCMP(CMP cmp, EntityManager em);
但一些老服务用自己的方法来CMP.Also转换用于搜索懒paing一些域名服务,他们也没有使用转换器。
我们想在CMP转换为DTO之前屏蔽数据。
问:究竟你 “面具” 是什么意思? – paulsm4
@ paulsm4表示将数据匿名化。 – FishGel