在使用Hibernate进行数据库处理时,频繁进行数据库操作过程中,时不时会出现java.sql.SQLException: Io 异常: Connection refused的错误,找了网上的资料,都没能解决,最后通过分析源代码,终于找到了问题的症结所在:SessionFactory没有关闭,以下是我修改前的代码:
public class HibernateSupport {
private Session session=null;
public Session getSession(){
try {Configurationconfig=new Configuration().configure();
SessionFactorysessionFactory=config.buildSessionFactory();
session=sessionFactory.openSession();
} catch (HibernateException e) {
e.printStackTrace();
}
return session;
}
public boolean closeSession(){
try {
session.close();
} catch (HibernateException e) {
e.printStackTrace();
return false;
}
return true;
}
}
这意味着每创建一个Session都会增加一个SessionFactory, 而每增加一个SessionFactory实例都要建立一次数据库连接,这样导致的系统中Oracle.exe进程的线程数不断增加,最后的结果是数据库连接被强制关闭,也就是Connection Refused,解决的方法是:将SessionFactory定义为静态变量,让所有的使用SessionFactory的类都共享一个实例,这样就可以避免以上问题的发生,当然也可以在每次关闭Session时关闭SessionFactory,但这样会造成一定的资源浪费。
修改后的代码如下:
public class HibernateSupport {
private static Configuration config=null;
private static SessionFactory sessionFactory=null;
static{
config=new Configuration().configure();
sessionFactory=config.buildSessionFactory();
}
private Session session=null;
public Session getSession(){
try {
session=sessionFactory.openSession();
} catch (HibernateException e) {
e.printStackTrace();
}
return session;
}
public boolean closeSession(){
try {
session.close();
} catch (HibernateException e) {
e.printStackTrace();
return false;
}
return true;
}
}
分享到:
相关推荐
在Java编程中,`java.sql.SQLException: 结果集已耗尽` 是一个常见的错误提示,通常出现在处理数据库查询结果集时。这个异常表明程序试图访问已经没有数据的结果集中下一行,即所有行已经被遍历完,尝试访问超出范围...
java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……
在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码
标题中的“Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装”是一个典型的错误信息,表明在尝试使用Java数据库连接(JDBC)驱动程序访问数据库时...
8. **异常处理**:在处理数据库操作时,必须捕获SQLException和其他可能的异常,进行合适的错误处理和日志记录。 9. **安全性**:使用PreparedStatement防止SQL注入攻击,同时对敏感信息(如密码)进行加密存储和...
在Oracle数据库操作中,我们经常会遇到与`java.sql.SQLException`相关的异常。这个异常通常是Java应用程序在尝试与Oracle数据库进行交互时出现的问题。本篇将详细探讨`java.sql.SQLException`的各种常见类型及其解决...
Q: I am working with ... I am using updateBinaryStream method of resultset to update the BLOB field but it is failing after giving following exception java.sql.SQLException: Internal Error: Unable to
java.sql.SQLException: null, message from server: “Host ‘223.72.41.7’ is not allowed to connect to this MySQL server” 客户端访问时报错: 解决方法: 1,登陆服务器 mysql> use mysql; //用mysql ...
`java.sql.SQLException: No suitable driver`这个错误通常有以下几个原因: 1. **驱动未导入**:Java运行环境的类路径中没有包含MySQL JDBC驱动的`.jar`文件。 2. **版本不匹配**:你使用的JDBC驱动版本可能与你的...
主要给大家介绍了关于MySQL存储表情时报错:java.sql.SQLException: Incorrect string value: 'xF0x9Fx92xA9x0Dx0A...'的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
本文主要介绍了关于MySQL存储表情报错:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\xA9\x0D\x0A…’的相关解决方法,分享出供大家参考学习,下面话不多说了,来一起看看详细的介绍: ...
import java.sql.SQLException; ``` 3. **注册驱动**:在使用MySQL驱动前,需要通过`Class.forName()`方法注册驱动。尽管在较新的JDBC版本中这个步骤可以省略,但为了兼容性,很多示例代码仍然包含它: ```java ...
Unknown column 'fillMen' in 'field list' java.sql.SQLException: Operation not ...java.sql.SQLException: QueryRunner requires a DataSource to be invoked in this way, or a Connection should be passed in
当你尝试连接到MySQL数据库时,可能会遇到一个特定的异常:“java.sql.SQLException: The server time zone value ‘?й???????’ is unrecognized or represents more than one time zone”。这个错误表明服务器...
异常详细信息: System.Data.SqlClient.SqlException: 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。) 源错误: 行 35: } 行 36: if (con...
在进行数据库操作时,可能会遇到各种错误,如SQL异常、连接异常等。JDBC提供SQLException类及其子类来捕获和处理这些异常,确保程序的健壮性。 9. 执行批处理: 对于批量插入或更新操作,JDBC提供了...
绝对好用的9i驱动包+10g驱动包 解决java.sql.SQLException: 不支持的特性 解决oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z异常 等等