JPA и SQL Server шифрование столбцов
Я использую WebSphere 7 и их реализацию JPA 2.0, основанную на OpenJPA, и у меня есть кое-что, что сводит меня с ума. Я должен подключиться к базе данных SQL Server 2008, которая использует шифрование столбца базы данных. Шифрование выполняется несколькими командами базы данных:
1 - ОТКРЫТОЕ СИММЕТРИЧНОЕ КЛЮЧЕВОЕ ОПРЕДЕЛЕНИЕ СЕРТИФИКАЦИЕЙ
2 - Выполните вставку / выбор / обновление / и т.д., используя методы базы данных EncryptByKey или DecryptByKey
3 - ЗАКРЫТЬ СИММЕТРИЧЕСКИЙ КЛЮЧ
Я искал, и не похоже, что 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();