Craig, I have tested it. It's cool! The db connection will be returned into pool and I can reuse the JPAEntityManager! Thanks again.
Regards, Yu Wang On Fri, Jan 22, 2010 at 9:57 AM, wang yu <wangy...@gmail.com> wrote: > Craig: > Thank you for your quick response. > If I close it, the connection will be returned into pool or just destroyed? > > Regards, > Yu Wang > > On Thu, Jan 21, 2010 at 8:56 PM, Craig L Russell <craig.russ...@sun.com> > wrote: >> Hi Yu Wang, >> >> You need to tell OpenJPA that you're not using the Connection any more by >> calling close(). See this Example 4.4 in the user's manual: >> >> import java.sql.*; >> import org.apache.openjpa.persistence.*; >> ... OpenJPAEntityManager kem = OpenJPAPersistence.cast(em); >> Connection conn = (Connection) kem.getConnection(); >> // do JDBC stuff >> conn.close(); >> >> Regards, >> >> Craig >> On Jan 21, 2010, at 1:26 AM, wang yu wrote: >> >>> Gurus: >>> I use OpenJPA 1.2.1 and dbcp: >>> <property name="openjpa.ConnectionDriverName" >>> >>> value="org.apache.commons.dbcp.BasicDataSource" /> >>> <property name="openjpa.ConnectionProperties" >>> >>> value="driverClassName=oracle.jdbc.driver.OracleDriver, >>> url=jdbc:oracle:thin:@localhost:1521:orcl, username=XXXX, >>> password=XXX, maxActive=8, maxWait=10000, poolPreparedStatements=true" >>> /> >>> >>> And I found the connection pool worked perfect for JPA query. But if I >>> use JDBC query like following: >>> OpenJPAEntityManager open_manager = OpenJPAPersistence >>> .cast(entitiManager); >>> Connection conn = (Connection) >>> open_manager.getConnection(); >>> java.sql.PreparedStatement PrepStmt = null; >>> java.sql.ResultSet sqlResults = null; >>> try { >>> PrepStmt = connection >>> .prepareStatement("select * from >>> tsam.MON_BRIDGE"); >>> sqlResults = PrepStmt.executeQuery(); >>> } catch (SQLException e) { >>> log.error(e.getMessage()); >>> } finally { >>> try { >>> if (sqlResults != null) >>> sqlResults.close(); >>> if (PrepStmt != null) >>> PrepStmt.close(); >>> } catch (SQLException e) { >>> >>> } >>> } >>> >>> The connection cannot be put into pool and the result is out of db >>> connection. >>> How should I do? Should I use createNativeQuery(String sql, Class >>> resultClass) to query with native sql? >>> >>> >>> Regards, >>> Yu Wang >> >> Craig L Russell >> Architect, Sun Java Enterprise System http://db.apache.org/jdo >> 408 276-5638 mailto:craig.russ...@sun.com >> P.S. A good JDO? O, Gasp! >> >> >