12

私は Java EE 6 を使用して、永続性と PostgreSQL データベース用の EclipseLink を使用する作業中のアプリケーションを持っています。

ユーザー登録の場合、PostgreSQL のパスワードを次のように設定します。

... password = crypt('inputPassword',gen_salt('bf')) ...

これには DigestUtils を使用できないため、ユーザーを手動で DB に挿入する必要があります。アプリケーションを構成可能な状態に保つために、DataSource にクエリを実行するのでは InitialContextInstance.lookup(dataSource)なく、次のように EntityManager から何らかの方法でそれ (または接続) を抽出します。

DataSource ds = entityManagerInstance.someFunctionThatReturnsADataSourceOrConnection();

または、インジェクションから保護するために、準備されたステートメントと組み合わせて createNativeQuery または同様のものを使用することは可能でしょうか?

4

3 に答える 3

16

時々、Googleでもう一度実行するだけです:

entityManager.getTransaction().begin();
java.sql.Connection connection = entityManager.unwrap(java.sql.Connection.class);
...
entityManager.getTransaction().commit();

Eclipse Link ドキュメンテーションで説明されているように

于 2013-06-07T23:23:54.610 に答える