2012-04-25 16 views
0

OpenJPAをベースとしたWebSphere 7とJPA 2.0の実装を使用しています。データベース列の暗号化を使用するSQL Server 2008データベースに接続する必要があります。暗号化は、いくつかのデータベース・コマンドによって行われる:JPAとSQL Serverの列暗号化

1 - OPEN SYMMETRIC復号鍵は、認証

2が - CLOSE SYMMETRIC - データベースメソッドEncryptByKey又はDecryptByKey

3を使用し/更新/などを選択/挿入を実行しますKEY

OpenJPAがこの機能をサポートしているとは思われません。 OpenJPAにこの種の暗号化をうまく使ってもらう方法は誰にも分かりますか?または、私はこのプロジェクトのJPAをスキップして、古い旧式のPreparedStatementsを使うべきですか?

答えて

1

だから、ネイティブクエリを実行するように見えるのは、これを行う唯一の方法です。だからこのようなものになる:

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(); 
関連する問題