Hibernate初始化配置的问题

ogiso_pest 2012-06-08 08:57:18
大概说下我现在的程序
一个BasaDao,大概如下
public class BaseDao<T> extends HibernateDaoSupport {

private Configuration conf;
private HibernateTemplate ht;
private SessionFactory sessionFactory;

public BaseDao() {
conf = new Configuration().configure();
sessionFactory = conf.buildSessionFactory();
ht = new HibernateTemplate(sessionFactory);
}
各种增删改查方法省略
}


然后有各种Dao继承这个BaseDao,这些Dao都是针对数据库里的每个表实现。
我启动一个定时器,并在初始化方法里,初始化一个Dao,每隔30s会检查缓存,然后取出其中的数据使用,Dao将其存入数据库中的表A,同时我会启动定时器,每隔半小时,将数据库里表A的数据删除,

执行处理数据并保存数据库的线程入下:


public class VehicleDetectQuartzJob implements Job {

private VehicleDetectDao dao = null;

public VehicleDetectQuartzJob() {
dao = new VehicleDetectDao();
}

public void execute(JobExecutionContext context)
throws JobExecutionException {
// 此处从缓存中取出数据,然后使用dao将其保存
}
}


执行删除数据库的定时器类如下:
public class VehicleDetectQuartzJob implements Job {

private VehicleDetectDao dao = null;

public VehicleDetectQuartzJob() {
dao = new VehicleDetectDao();
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
// 此处执行调用dao执行删除操作
}
}


数据库是Oracle11g,但是我运行一段时间后,出现如下错误:
java.sql.SQLRecoverableException: Io 异常: The Network Adapter could not establish the connection
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:101)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:229)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:458)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:411)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:474)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2006)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1289)
at com.traffic.rest.dao.BaseDao.<init>(BaseDao.java:47)
at com.traffic.rest.dao.VehicleDetectDao.<init>(VehicleDetectDao.java:13)
at com.traffic.mina.thread.VehicleDetectQuartzJob.<init>(VehicleDetectQuartzJob.java:31)
at sun.reflect.GeneratedConstructorAccessor20.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:50)
at org.quartz.core.JobRunShell.initialize(JobRunShell.java:133)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:353)

...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ogiso_pest 2012-06-08
  • 打赏
  • 举报
回复
解决了~
呵呵~
是别的问题
ogiso_pest 2012-06-08
  • 打赏
  • 举报
回复
那应该怎么解决啊?每次执行操作后我执行关闭,把sessionfactory关闭行么?
麻烦了~
dqsweet 2012-06-08
  • 打赏
  • 举报
回复
你这样不停地new连接会耗尽的
ogiso_pest 2012-06-08
  • 打赏
  • 举报
回复
出错的地方就在执行删除的定时器的初始化Dao这里
public VehicleDetectQuartzJob() {
dao = new VehicleDetectDao();
}
如果之前我已经初始化一个dao,并且会一直保持连接,然后定时执行另外一个任务,初始化同一个dao,然后狮子那个操作,这样行么?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧