JPA和SQL Server列加密

JPA和SQL Server列加密

问题描述:

我正在使用基于OpenJPA的WebSphere 7及其JPA 2.0实现,并且我有一些让我发疯的东西。我必须连接到使用数据库列加密的SQL Server 2008数据库。加密是由几个数据库命令完成:JPA和SQL Server列加密

1 - OPEN对称密钥解密通过认证

2 - 使用数据库的方法EncryptByKey的或DecryptByKey这个

3执行插入/选择/更新/等 - CLOSE对称键

我已经搜索,并没有出现OpenJPA支持此功能。有人知道如何让OpenJPA与这种类型的加密很好地发挥作用吗?或者我应该跳过这个项目的JPA并使用良好的老式PreparedStatements?

所以是的,它看起来像做本机查询是唯一的方法来做到这一点。所以它会出现这样的事情:

EntityManager em = getEntityManager(); 
Query openKey = em.createNativeQuery("OPEN SYMMETRIC KEY MY_KEY DECRYPTION BY CERTIFICATE MY_CERT"); 
openKey.executeUpdate(); 

Query query = em.createNativeQuery("SELECT FIRSTNAME, LASTNAME, CONVERT(varchar, DECRYPTBYKEY(SSN)) as SSN from report where record_id = ?", Report.class); 
query.setParameter(1, recordId); 
report = (Report) query.getSingleResult(); 

Query closeKey = em.createNativeQuery("CLOSE SYMMETRIC KEY MY_KEY"); 
closeKey.executeUpdate();