栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Hibernate 4.3中关闭SessionFactory

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Hibernate 4.3中关闭SessionFactory

没错,Hibernate
4.3.x中似乎存在一个错误,该错误中,由Hibernate的默认连接池生成的线程在关闭时不会被清除。我在这里提交了一个错误(请投票!):

https://hibernate.atlassian.net/browse/HHH-8896

在修复之前,您有两种选择。您可以在HibernateUtil中添加一个方法,并使用它来强制连接池在应用执行结束时自行清理:

public static void stopConnectionProvider() {    final SessionFactoryImplementor sessionFactoryImplementor = (SessionFactoryImplementor) sessionFactory;    ConnectionProvider connectionProvider = sessionFactoryImplementor.getConnectionProvider();    if (Stoppable.class.isInstance(connectionProvider)) {        ((Stoppable) connectionProvider).stop();    }        }

这可以工作,但是很丑陋,很笨拙,使用了不推荐使用的方法,等等。更好的解决方案是只使用“真实的”连接池,例如c3p0,只需将以下属性添加到hibernate.cfg中就可以启用它。
xml:

<property name="hibernate.c3p0.acquire_increment">1</property><property name="hibernate.c3p0.idle_test_period">100</property><property name="hibernate.c3p0.max_size">10</property><property name="hibernate.c3p0.max_statements">10</property><property name="hibernate.c3p0.min_size">10</property><property name="hibernate.c3p0.timeout">100</property>

请注意,如果您使用其他连接池,则应删除当前配置中的该连接池属性:

<!-- JDBC connection pool (use the built-in) --><property name="connection.pool_size">1</property>

编辑:要使用c3p0连接池,您还需要hibernate-c3p0依赖项。Hibernate快照存储库中的4.3.0-SNAPSHOT的Maven示例:

<repositories>  ...  <repository>    <id>hibernate-snapshots</id>    <url>http://snapshots.jboss.org/maven2/</url>  </repository>  ...</repositories><dependencies> ... <dependency>   <groupId>org.hibernate</groupId>   <artifactId>hibernate-c3p0</artifactId>   <version>4.3.0-SNAPSHOT</version> </dependency> ...<dependencies>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470902.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号