我们一直用orcal ,现在DB2。 都是在eclipse下用jdbc驱动连接数据库。感觉还算稳定。

解决方案 »

  1.   

    对于每种数据库创建一个sessionFactory,提供对应的configure文件,需要的时候调换就可以了。
      

  2.   

    异常信息如下:
    java.lang.InterruptedException: sleep interrupted
            at java.lang.Thread.sleep(Native Method)
            at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicRe
    sourcePool.java:1805)
            at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(Thre
    adPoolAsynchronousRunner.java:547)
    - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@188e804 --
    APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
    - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@188e804 --
    APPARENT DEADLOCK!!! Complete Status:
            Managed Threads: 3
            Active Threads: 3
            Active Tasks:
                    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@bb0a41
     (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
                    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@19e61f
    d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
                    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1334ec
    d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
            Pending Tasks:
                    com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResou
    rceTask@17a941e
                    com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResou
    rceTask@9278cc
    Pool thread stack traces:
            Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5
    ,main]
                    java.net.SocketInputStream.socketRead0(Native Method)
                    java.net.SocketInputStream.read(Unknown Source)
                    java.io.DataInputStream.readFully(Unknown Source)
                    java.io.DataInputStream.readFully(Unknown Source)
                    net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.j
    ava:841)
                    net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket
    .java:722)
                    net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStrea
    m.java:466)
                    net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.jav
    a:103)
                    net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2202)
                    net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:602)
                    net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2
    .java:344)
                    net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3
    .java:50)
                    net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
                    com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(Driver
    ManagerDataSource.java:134)
                    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
    nection(WrapperConnectionPoolDataSource.java:182)
                    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
    nection(WrapperConnectionPoolDataSource.java:171)
                    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnect
    ionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
                    com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicRes
    ourcePool.java:1014)
                    com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicRe
    sourcePool.java:32)
                    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
    sicResourcePool.java:1810)
                    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
    (ThreadPoolAsynchronousRunner.java:547)
            Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5
    ,main]
                    java.net.SocketInputStream.socketRead0(Native Method)
                    java.net.SocketInputStream.read(Unknown Source)
                    java.io.DataInputStream.readFully(Unknown Source)
                    java.io.DataInputStream.readFully(Unknown Source)
                    net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.j
    ava:841)
                    net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket
    .java:722)
                    net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStrea
    m.java:466)
                    net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.jav
    a:103)
                    net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2202)
                    net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:602)
                    net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2
    .java:344)
                    net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3
    .java:50)
                    net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
                    com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(Driver
    ManagerDataSource.java:134)
                    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
    nection(WrapperConnectionPoolDataSource.java:182)
                    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
    nection(WrapperConnectionPoolDataSource.java:171)
                    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnect
    ionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
                    com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicRes
    ourcePool.java:1014)
                    com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicRe
    sourcePool.java:32)
                    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
    sicResourcePool.java:1810)
                    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
    (ThreadPoolAsynchronousRunner.java:547)
            Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5
    ,main]
                    java.net.SocketInputStream.socketRead0(Native Method)
                    java.net.SocketInputStream.read(Unknown Source)
                    java.io.DataInputStream.readFully(Unknown Source)
                    java.io.DataInputStream.readFully(Unknown Source)
                    net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.j
    ava:841)
                    net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket
    .java:722)
                    net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStrea
    m.java:466)
                    net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.jav
    a:103)
                    net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2202)
                    net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:602)
                    net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2
    .java:344)
                    net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3
    .java:50)
                    net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
                    com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(Driver
    ManagerDataSource.java:134)
                    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
    nection(WrapperConnectionPoolDataSource.java:182)
                    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledCon
    nection(WrapperConnectionPoolDataSource.java:171)
                    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnect
    ionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
                    com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicRes
    ourcePool.java:1014)
                    com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicRe
    sourcePool.java:32)
                    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
    sicResourcePool.java:1810)
                    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
    (ThreadPoolAsynchronousRunner.java:547)
      

  3.   

    有时候简单的东西性能反而是最好的。当去掉Hibernate改用JDBC连接数据库以后什么问题都解决了,切换数据库速度快,连接稳定。(JDBC驱动用的:jtds)
    这让我有点怀疑Hibernate的性能,在对JDBC做轻量级封装以后,性能也不至于下降的这么厉害吧,让我痛苦了快2个月