|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2004-12-06
[code:1] Configuration cfg = new Configuration().addClass(Cat.class);
SessionFactory factory = cfg.buildSessionFactory(); Session session = factory.openSession(); Transaction tx = session.beginTransaction(); Connection connection = session.connection(); Cat cat1 = (Cat)session.load(Cat.class, CATID); cat1.setName("bbbbbbbbbbbbbbbb"); tx.commit(); session.close(); System.out.println("connection是否关闭:"+connection.isClosed());[/code:1] 最后一行,打出的是 false. session.close();没有调用connection.close()吗? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-07
如果你的Connection来自于连接池,他只不过被归还给池了,确实没有物理关闭,这是正常的结果。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-07
3ks!
我使用的默认的hibernate.properties置于classpath下, 应该没有使用commons-pool或c3p9等第三方连接池, 请问:hibernate内部也默认使用自带的连接池? [code:1] ###################### ### Query Language ### ###################### ## define query language constants / function names hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N' ## package imports hibernate.query.imports net.sf.hibernate.test, net.sf.hibernate.eg ################# ### Platforms ### ################# ## JNDI Datasource #hibernate.connection.datasource jdbc/test #hibernate.connection.username db2 #hibernate.connection.password db2 ## PostgreSQL #hibernate.dialect net.sf.hibernate.dialect.PostgreSQLDialect #hibernate.connection.driver_class org.postgresql.Driver #hibernate.connection.url jdbc:postgresql:template1 #hibernate.connection.username pg #hibernate.connection.password #hibernate.query.substitutions yes 'Y', no 'N' ## DB2 hibernate.dialect net.sf.hibernate.dialect.DB2Dialect hibernate.connection.driver_class com.p6spy.engine.spy.P6SpyDriver hibernate.connection.url jdbc:db2//192.168.51.15/ebuy hibernate.connection.username administrator hibernate.connection.password inforflow ## MySQL #hibernate.dialect net.sf.hibernate.dialect.MySQLDialect #hibernate.connection.driver_class org.gjt.mm.mysql.Driver #hibernate.connection.driver_class com.mysql.jdbc.Driver #hibernate.connection.url jdbc:mysql://localhost/java?useUnicode=true&characterEncoding=GBK #hibernate.connection.username root #hibernate.connection.password kunmao ## Oracle #hibernate.dialect net.sf.hibernate.dialect.OracleDialect #hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver #hibernate.connection.username ora #hibernate.connection.password ora #hibernate.connection.url jdbc:oracle:thin:@localhost:1521:test ## Sybase #hibernate.dialect net.sf.hibernate.dialect.SybaseDialect #hibernate.connection.driver_class com.sybase.jdbc2.jdbc.SybDriver #hibernate.connection.username sa #hibernate.connection.password sasasa #hibernate.connection.rl jdbc:sybase:Tds:co3061835-a:5000/tempdb ## HypersonicSQL #hibernate.dialect net.sf.hibernate.dialect.HSQLDialect #hibernate.connection.driver_class org.hsqldb.jdbcDriver #hibernate.connection.username sa #hibernate.connection.password #hibernate.connection.url jdbc:hsqldb:hsql://localhost #hibernate.connection.url jdbc:hsqldb:test ## Mckoi SQL #hibernate.dialect net.sf.hibernate.dialect.MckoiDialect #hibernate.connection.driver_class com.mckoi.JDBCDriver #hibernate.connection.url jdbc:mckoi:/// #hibernate.connection.url jdbc:mckoi:local://C:/mckoi0.94h/db.conf #hibernate.connection.username admin #hibernate.connection.password nimda ## SAP DB #hibernate.dialect net.sf.hibernate.dialect.SAPDBDialect #hibernate.connection.driver_class com.sap.dbtech.jdbc.DriverSapDB #hibernate.connection.url jdbc:sapdb://localhost/TST #hibernate.connection.username TEST #hibernate.connection.password TEST #hibernate.query.substitutions yes 'Y', no 'N' ## MS SQL Server #hibernate.dialect net.sf.hibernate.dialect.SybaseDialect #hibernate.connection.username sa #hibernate.connection.password ## JSQL Driver #hibernate.connection.driver_class com.jnetdirect.jsql.JSQLDriver #hibernate.connection.url jdbc:JSQLConnect://WL99LCX27 ## JTURBO Driver #hibernate.connection.driver_class com.newatlanta.jturbo.driver.Driver #hibernate.connection.url jdbc:JTurbo://CO3061835-A:1433/master ## WebLogic Driver #hibernate.connection.driver_class weblogic.jdbc.mssqlserver4.Driver #hibernate.connection.url jdbc:weblogic:mssqlserver4:CO3061835-A:1433 ## Microsoft Driver (not supported!) #hibernate.connection.driver_class com.microsoft.jdbc.sqlserver.SQLServerDriver #hibernate.connection.url jdbc:microsoft:sqlserver://CO3061835-A:1433;SelectMethod=cursor ## Interbase #hibernate.dialect net.sf.hibernate.dialect.InterbaseDialect #hibernate.connection.username sysdba #hibernate.connection.password masterkey ## DO NOT specify hibernate.connection.sqlDialect ## InterClient #hibernate.connection.driver_class interbase.interclient.Driver #hibernate.connection.url jdbc:interbase://localhost:3060/C:/firebird/test.gdb ## Pure Java #hibernate.connection.driver_class org.firebirdsql.jdbc.FBDriver #hibernate.connection.url jdbc:firebirdsql:localhost/3050:/firebird/test.gdb ## Pointbase #hibernate.dialect net.sf.hibernate.dialect.PointbaseDialect #hibernate.connection.driver_class com.pointbase.jdbc.jdbcUniversalDriver #hibernate.connection.url jdbc:pointbase:embedded:sample #hibernate.connection.username PBPUBLIC #hibernate.connection.password PBPUBLIC ################################# ### Hibernate Connection Pool ### ################################# hibernate.connection.pool_size 1 hibernate.statement_cache.size 25 ########################### ### C3P0 Connection Pool### ########################### #hibernate.c3p0.max_size 2 #hibernate.c3p0.min_size 2 #hibernate.c3p0.timeout 5000 #hibernate.c3p0.max_statements 100 #hibernate.c3p0.validate false ################################### ### Apache DBCP Connection Pool ### ################################### # connection pool #hibernate.dbcp.maxActive 100 #hibernate.dbcp.whenExhaustedAction 1 #hibernate.dbcp.maxWait 120000 #hibernate.dbcp.maxIdle 10 ## prepared statement cache #hibernate.dbcp.ps.maxActive 100 #hibernate.dbcp.ps.whenExhaustedAction 1 #hibernate.dbcp.ps.maxWait 120000 #hibernate.dbcp.ps.maxIdle 100 # optional query to validate pooled connections: #hibernate.dbcp.validationQuery select 1 from dual #hibernate.dbcp.testOnBorrow true #hibernate.dbcp.testOnReturn false ################################# ### Plugin ConnectionProvider ### ################################# ## use a custom ConnectionProvider (if not set, Hibernate will choose a built-in ConnectionProvider using hueristics) #hibernate.connection.provider_class net.sf.hibernate.connection.DriverManagerConnectionProvider #hibernate.connection.provider_class net.sf.hibernate.connection.DatasourceConnectionProvider #hibernate.connection.provider_class net.sf.hibernate.connection.C3P0ConnectionProvider #hibernate.connection.provider_class net.sf.hibernate.connection.DBCPConnectionProvider ####################### ### Transaction API ### ####################### ## the Transaction API abstracts application code from the underlying JTA or JDBC transactions #hibernate.transaction.factory_class net.sf.hibernate.transaction.JTATransactionFactory #hibernate.transaction.factory_class net.sf.hibernate.transaction.JDBCTransactionFactory ## to use JTATransactionFactory, Hibernate must be able to locate the UserTransaction in JNDI ## default is java:comp/UserTransaction #jta.UserTransaction jta/usertransaction #jta.UserTransaction javax.transaction.UserTransaction #jta.UserTransaction UserTransaction ## to use JTATransactionFactory with JCS caching, Hibernate must be able to obtain the JTA TransactionManager #hibernate.transaction.manager_lookup_class net.sf.hibernate.transaction.JBossTransactionManagerLookup #hibernate.transaction.manager_lookup_class net.sf.hibernate.transaction.WeblogicTransactionManagerLookup #hibernate.transaction.manager_lookup_class net.sf.hibernate.transaction.WebSphereTransactionManagerLookup #hibernate.transaction.manager_lookup_class net.sf.hibernate.transaction.OrionTransactionManagerLookup #hibernate.transaction.manager_lookup_class net.sf.hibernate.transaction.ResinTransactionManagerLookup ############################## ### Miscellaneous Settings ### ############################## ## print all generated SQL to the console hibernate.show_sql true ## specify a JDBC isolation level #hibernate.connection.isolation 4 ## set the JDBC fetch size #hibernate.jdbc.fetch_size 25 ## set the maximum JDBC 2 batch size (a nonzero value enables batching) hibernate.jdbc.batch_size 0 ## enable use of JDBC 2 scrollable ResultSets (specifying a Dialect will cause Hibernate to use a sensible default) #hibernate.jdbc.use_scrollable_resultset true ## use streams when writing binary types to / from JDBC hibernate.jdbc.use_streams_for_binary true ## specify a default schema for unqualified tablenames #hibernate.default_schema test ## use a custom stylesheet for XML generation (if not specified, hibernate-default.xslt will be used) #hibernate.xml.output_stylesheet C:/Hibernate/net/sf/hibernate/hibernate-default.xslt ## enable outerjoin fetching (specifying a Dialect will cause Hibernate to use sensible default) #hibernate.use_outer_join false ## enable CGLIB reflection optimizer (enabled by default) #hibernate.cglib.use_reflection_optimizer false ############ ### JNDI ### ############ ## specify a JNDI name for the SessionFactory #hibernate.session_factory_name hibernate/session_factory ## Hibernate uses JNDI to bind a name to a SessionFactory and to look up the JTA UserTransaction; ## if hibernate.jndi.* are not specified, Hibernate will use the default InitialContext() which ## is the best approach in an application server #file system #hibernate.jndi.class com.sun.jndi.fscontext.RefFSContextFactory #hibernate.jndi.url file:/ #WebSphere #hibernate.jndi.class com.ibm.websphere.naming.WsnInitialContextFactory #hibernate.jndi.url iiop://localhost:900/ [/code:1] |
|
| 返回顶楼 | |
|
最后更新时间:2004-12-07
另外请教一个与hibernate无关的问题,已困惑已久:
使用源自连接池的数据库连接对象connection, 若调用connection.close(), 此连接对象是关闭, 还是没有关闭,只返回给了连接池 |
|
| 返回顶楼 | |
|
最后更新时间:2004-12-07
跟踪了一下Hiberante代码
发现了默认的Pool?这是Hibernate自身提供的默认Connection Pool吗? 和其他第三方Pool什么区别? [code:1] package net.sf.hibernate.connection; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.Iterator; import java.util.Properties; import net.sf.hibernate.HibernateException; import net.sf.hibernate.cfg.Environment; import net.sf.hibernate.util.JDBCExceptionReporter; import net.sf.hibernate.util.PropertiesHelper; import net.sf.hibernate.util.ReflectHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * A connection provider that uses <tt>java.sql.DriverManager</tt>. This provider * also implements a very rudimentary connection pool. * @see ConnectionProvider * @author Gavin King */ public class DriverManagerConnectionProvider implements ConnectionProvider [/code:1] |
|
| 返回顶楼 | |
|
最后更新时间:2004-12-07
Hibernate提供的连接池是一个非常简单的实现,开发的时候可以用用。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-07
没有关闭,只返回给了连接池
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-07
那要看连接池的实现了。一般都是返回给连接池,因为新建连接的开销太大了。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-12-07
呵呵,感觉楼上几位回答的还不是很彻底。
象这样的回答:“一般都是返回给连接池” 究竟是通过connection.close()方法返回给连接池, 还是另外的方法,如追加到池中。 |
|
| 返回顶楼 | |
|
最后更新时间:2004-12-07
KunMao 写道 呵呵,感觉楼上几位回答的还不是很彻底。 象这样的回答:“一般都是返回给连接池” 究竟是通过connection.close()方法返回给连接池, 还是另外的方法,如追加到池中。 Hibernate实现的池源代码你不都已经看过了吗?还需要问? |
|
| 返回顶楼 | |









