Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
652 views
in Technique[技术] by (71.8m points)

jpa - How to get DataSource or Connection from JPA2 EntityManager in Java EE 6

I have a working application where I use Java EE 6 with EclipseLink for persistence and a PostgreSQL database.

For the User-Registration I want to set the password in PostgreSQL to:

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

As I cant use DigestUtils for this, I have to insert the user manually into the DB. To keep my application configurable I do not want to query the DataSource with an InitialContextInstance.lookup(dataSource) but to extract it (or the Connection) somehow from the EntityManager like:

DataSource ds = entityManagerInstance.someFunctionThatReturnsADataSourceOrConnection();

Or would it be possible to use createNativeQuery or something similar in conjuntion with a prepared statement to protect against injections?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

sometimes it just takes another run in google:

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

as described in the Eclipse Link Documentation


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...