0

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

1 - 証明書によるオープンな対称鍵復号化

2 - データベース メソッド EncryptByKey または DecryptByKey を使用して挿入/選択/更新/etc を実行します。

3 - 対称キーを閉じる

検索したところ、OpenJPA がこの機能をサポートしているようには見えません。このタイプの暗号化で OpenJPA をうまく機能させる方法を知っている人はいますか? それとも、このプロジェクトの JPA をスキップして、古き良き PreparedStatements を使用する必要がありますか?

4

1 に答える 1

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();
于 2012-05-10T13:40:29.090 に答える