程序中hibernate怎样实现多个数据库多表互相联查

问题描述

框架用的SpringMVC+Hibernate4,现在用了两个数据库,都是Oracle数据库,用的的dblink的方式实现的不同的数据库的表可以互相联查。在A数据库中建B数据库的表的link。但是最近总出现一些问题,程序运行一段时间后,自己连不上数据库了,WebLogic服务也没停,但是重启WebLogic后就一切正常。过段时间后又会出现连不上数据库的问题。下面是后台出错日志。所以就想换一种方式连接数据库。要求就是A数据库和B数据库的表可以互相联查,不是网上说的那种一会儿切换到A库,一会儿切换到B库。不知道用什么方式,希望有这方面的经验的大神能提供点建议。下面是后台报错信息,在网上也搜索了,很多人都没解决这错误,我也准备放弃了。WARN:org.hibernate.engine.jdbc.spi.SqlExceptionHelper-SQLError:17410,SQLState:08000ERROR:org.hibernate.engine.jdbc.spi.SqlExceptionHelper-无法从套接字读取更多的数据DEBUG:com.hshunion.pews.model.dao.BaseHibernateDAO-executesqlerror....org.hibernate.exception.JDBCConnectionException:无法从套接字读取更多的数据atorg.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:131)atorg.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)atorg.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)atorg.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)atorg.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)atorg.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)at$Proxy76.executeQuery(UnknownSource)atorg.hibernate.loader.Loader.getResultSet(Loader.java:1962)atorg.hibernate.loader.Loader.doQuery(Loader.java:829)atorg.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)atorg.hibernate.loader.Loader.doList(Loader.java:2447)atorg.hibernate.loader.Loader.doList(Loader.java:2433)atorg.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2263)atorg.hibernate.loader.Loader.list(Loader.java:2258)atorg.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:331)atorg.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1697)atorg.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:225)atorg.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:156)atcom.hshunion.pews.model.dao.BaseHibernateDAO.getListBysql(BaseHibernateDAO.java:116)atcom.hshunion.pews.service.CdorgainService.getOrginfoList(CdorgainService.java:35)atcom.hshunion.pews.service.CdorgainService$$FastClassByCGLIB$$3825368b.invoke(<generated>)atnet.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)atorg.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)atorg.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)atorg.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)atorg.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)atcom.hshunion.pews.service.CdorgainService$$EnhancerByCGLIB$$77d80d97.getOrginfoList(<generated>)atcom.hshunion.pews.web.controller.CdorgainColltroller.getTheMain(CdorgainColltroller.java:52)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:616)atorg.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)atorg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)atorg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:707)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:820)atweblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)atweblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)atweblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)atweblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)atweblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3684)atweblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)atweblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)atweblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)atweblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)atweblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)atweblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)atweblogic.work.ExecuteThread.execute(ExecuteThread.java:201)atweblogic.work.ExecuteThread.run(ExecuteThread.java:173)Causedby:java.sql.SQLRecoverableException:无法从套接字读取更多的数据atoracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:101)atoracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263)atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:271)atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:445)atoracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1059)atoracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1016)atoracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:589)atoracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)atoracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791)atoracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866)atoracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1188)atoracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3386)atoracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3430)atoracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)atweblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:135)atsun.reflect.GeneratedMethodAccessor180.invoke(UnknownSource)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:616)atorg.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)...59more

解决方案

解决方案二:
是不是驱动包的问题,要不换个驱动包试试
解决方案三:
是不是连接池的问题,修改配置试试
解决方案四:
应该是连接池配置问题访问的过多达到上限连接池没有设置自动重新请求连接

时间: 2024-10-25 22:56:10

程序中hibernate怎样实现多个数据库多表互相联查的相关文章

link 中在一个程序中能不能使用2个数据库,主从数据库怎么相互备份?

问题描述 link 中在一个程序中能不能使用2个数据库,主从数据库怎么相互备份? link 中在一个程序中能不能使用2个数据库,主从数据库怎么相互备份? 解决方案 可以啊,你可以定义多个edmx,每个映射到一个数据库上

Android程序中读取使用已有的SQLite数据库

方法一: 先在 Manifest 里添加权限: <span style="font-size:12px;"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /&

我在使用VS写asp.net,web应用程序中如何连sql server 接数据库

问题描述 我在使用VS写asp.net,web应用程序中如何连sql server 接数据库 10C 在web程序中我需要连接数据库,使用其中的数据.怎样才能用js与我的sql server2012连接,有没有具体的列子啊!新手求大神解答. 解决方案 用js与数据库连接还是第一次听说,你如果需要执行数据操作是需要后端语言的,Web应用在后台代码中可以用ADO.NET技术来进行数据操作.可以前台js 使用Ajax Post后者Get请求后端接口,后端进行数据库的增删改查.如果是服务器控件直接在事件

在程序中直接设定待连接的数据库

如何在ASP程式当中,直接设定待连接的数据库呢?这个方法即所谓的「DSN-less」法. 第一个方法在 [ODBC] 新建一个系统资料来源,有时候用起来并不方便,譬如当网站服务器不在身旁.或向ISP租用虚拟主机时,这时候并不方便跑到网站服务器的 [ODBC] 中去新建一个系统资料来源. 于是ASP提供了一个直接在ASP程式码中指定所要连接的数据库的方法,使用「Server.CreateObject」建立连接的对象后,使用「Open」直接连接到待存取查询数据库,对在Access数据库而言,数据库连

浅析java程序中hibernate的应用总结

hibernate可以理解为是一个中间件它负责把java程序的sql语句接收过来发送到数据库,而数据库返回来的信息hibernate接收之后直接生成一个对象传给java   我们知道如果用java连接数据库,大量的SQL代码,我们就想通过一种工具来操作数据库, 我们首先想到的就是JDBC,但是想更好的针对类的属性进行操作,我们会选择Hibernate. 那么Hibernate 原理是什么呢?hibernate可以理解为是一个中间件它负责把java程序的sql语句接收过来发送到数据库, 而数据库返

浅析java程序中hibernate的应用总结_java

我们知道如果用java连接数据库,大量的SQL代码,我们就想通过一种工具来操作数据库,我们首先想到的就是JDBC,但是想更好的针对类的属性进行操作,我们会选择Hibernate. 那么Hibernate 原理是什么呢?hibernate可以理解为是一个中间件它负责把java程序的sql语句接收过来发送到数据库,而数据库返回来的信息hibernate接收之后直接生成一个对象传给java. 一  首先我们先了解一下hibernate的工作7个流程:1.读取并解析配置文件   2.创建SessionF

Oracle中如何设置EXCLUDE后STANDBY数据库只读表空间的恢复

在STANDBY数据库利用RMAN恢复主库上EXCLUDE的只读表空间,碰到了问题. 数据库恢复完成,但是恢复被主库EXCLUDE的只读表空间时,发现无法进行恢复: RMAN> restore tablespace clubstat2_bak; Starting restore at 14-FEB-11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=1094 devtype=DISK file 22 is excluded from

关于表关联,在表中不显示,在程序中表现问题

问题描述 我们公司的表之间的关联关系不在建表时显示,在程序中建立model层时显示.有哪位指点一下怎么显示表之间的各种关系啊(在实体类中)???补充:不用hibernate等框架 问题补充:飞雪无情 写道 解决方案 不普遍,我们的关联最后在建表的时候还是体现在表里的..打开一些数据库管理工具就能看出来哪个表和哪个表关联,使用了什么字段关联!解决方案二:啊.还有这样的.那就看你们的设计文档吧,还有UML图啥的,那里有实体类与实体类之间的关系,还有一些你们定义或者用到的规范.或者你自己看程序源代码,

Java数据库程序中的存储过程设计

程序|存储过程|设计|数据|数据库 本文阐述了怎么使用DBMS存储过程.阐述了使用存储过程的基本的和高级特性,比如返回ResultSet.本文假设你对DBMS和JDBC已经非常熟悉,也假设你能够毫无障碍地阅读其它语言写成的代码(即不是Java的语言),但是,并不要求你有任何存储过程的编程经历. 存储过程是指保存在数据库并在数据库端执行的程序.你可以使用特殊的语法在Java类中调用存储过程.在调用时,存储过程的名称及指定的参数通过JDBC连接发送给DBMS,执行存储过程并通过连接(如果有)返回结果