<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

    applicationContext.xml 文件:
    <
    bean id="dataSource"

            class="com.mchange.v2.c3p0.ComboPooledDataSource"

            destroy-method="close">

            <property name="driverClass">

                <value>com.mysql.jdbc.Driver</value>

            </property>

            <property name="jdbcUrl">

                <value>jdbc:mysql://ip地址:3306/數據庫名字?useUnicode=true&amp;characterEncoding=utf-8</value>

            </property>

            <property name="user">

                <value>root</value>

            </property>

            <property name="password">

                <value>root</value>

            </property>

     <!--連接池中保留的最小連接數。-->

            <property name="minPoolSize">

                <value>5</value>

            </property>

     <!--連接池中保留的最大連接數。Default: 15 -->

            <property name="maxPoolSize">

                <value>30</value>

            </property>

    <!--初始化時獲取的連接數,取值應在minPoolSizemaxPoolSize之間。Default: 3 -->

            <property name="initialPoolSize">

                <value>10</value>

            </property>

     <!--最大空閑時間,60秒內未使用則連接被丟棄。若為0則永不丟棄。Default: 0 -->

            <property name="maxIdleTime">

                <value>60</value>

            </property>

     <!--當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數。Default: 3 -->

            <property name="acquireIncrement">

                <value>5</value>

            </property>

     <!--JDBC的標準參數,用以控制數據源內加載的PreparedStatements數量。但由于預緩存的statements
     
    屬于單個connection而不是整個連接池。所以設置這個參數需要考慮到多方面的因素。
     
    如果maxStatementsmaxStatementsPerConnection均為0,則緩存被關閉。Default: 0-->

            <property name="maxStatements">

                <value>0</value>

            </property>

     <!--60秒檢查所有連接池中的空閑連接。Default: 0 -->

            <property name="idleConnectionTestPeriod">

                <value>60</value>

            </property>

     <!--定義在從數據庫獲取新連接失敗后重復嘗試的次數。Default: 30 -->

            <property name="acquireRetryAttempts">

                <value>30</value>

            </property>

     <!--獲取連接失敗將會引起所有等待連接池來獲取連接的線程拋出異常。但是數據源仍有效
     
    保留,并在下次調用getConnection()的時候繼續嘗試獲取連接。如果設為true,那么在嘗試
     
    獲取連接失敗后該數據源將申明已斷開并永久關閉。Default: false-->

            <property name="breakAfterAcquireFailure">

                <value>true</value>

            </property>

     <!--因性能消耗大請只在需要的時候使用它。如果設為true那么在每個connection提交的
     
    時候都將校驗其有效性。建議使用idleConnectionTestPeriodautomaticTestTable
     
    等方法來提升連接測試的性能。Default: false -->

            <property name="testConnectionOnCheckout">

                <value>false</value>

            </property>

        </bean>

    c3p0配置參數: 

    acquireIncrement
    acquireRetryAttempts
    acquireRetryDelay
    autoCommitOnClose
    automaticTestTable
    breakAfterAcquireFailure
    checkoutTimeout
    connectionCustomizerClassName
    connectionTesterClassName
    debugUnreturnedConnectionStackTraces
    factoryClassLocation

    forceIgnoreUnresolvedTransactions
    idleConnectionTestPeriod
    initialPoolSize
    maxAdministrativeTaskTime
    maxConnectionAge
    maxIdleTime
    maxIdleTimeExcessConnections
    maxPoolSize
    maxStatements
    maxStatementsPerConnection
    minPoolSize

    numHelperThreads
    overrideDefaultUser
    overrideDefaultPassword
    password
    preferredTestQuery
    propertyCycle
    testConnectionOnCheckin
    testConnectionOnCheckout
    unreturnedConnectionTimeout
    user
    usesTraditionalReflectiveProxies

    acquireIncrement

    Default: 3

    Determines how many connections at a time c3p0 will try to acquire when the pool is exhausted. [See ]

    acquireRetryAttempts

    Default: 30

    Defines how many times c3p0 will try to acquire a new Connection from the database before giving up. If this value is less than or equal to zero, c3p0 will keep trying to fetch a Connection indefinitely. [See ]

    acquireRetryDelay

    Default: 1000

    Milliseconds, time c3p0 will wait between acquire attempts. [See ]

    autoCommitOnClose

    Default: false

    The JDBC spec is unforgivably silent on what should happen to unresolved, pending transactions on Connection close. C3P0's default policy is to rollback any uncommitted, pending work. (I think this is absolutely, undeniably the right policy, but there is no consensus among JDBC driver vendors.) Setting autoCommitOnClose to true causes uncommitted pending work to be committed, rather than rolled back on Connection close. [Note: Since the spec is absurdly unclear on this question, application authors who wish to avoid bugs and inconsistent behavior should ensure that all transactions are explicitly either committed or rolled-back before close is called.] [See ]

    automaticTestTable

    Default: null

    If provided, c3p0 will create an empty table of the specified name, and use queries against that table to test the Connection. If automaticTestTable is provided, c3p0 will generate its own test query, therefore any preferredTestQuery set will be ignored. You should not work with the named table after c3p0 creates it; it should be strictly for c3p0's use in testing your Connection. (If you define your own ConnectionTester, it must implement the QueryConnectionTester interface for this parameter to be useful.) [See ]

    breakAfterAcquireFailure

    Default: false

    If true, a pooled DataSource will declare itself broken and be permanently closed if a Connection cannot be obtained from the database after making acquireRetryAttempts to acquire one. If false, failure to obtain a Connection will cause all Threads waiting for the pool to acquire a Connection to throw an Exception, but the DataSource will remain valid, and will attempt to acquire again following a call to getConnection(). [See ]

    checkoutTimeout

    Default: 0

    The number of milliseconds a client calling getConnection() will wait for a Connection to be checked-in or acquired when the pool is exhausted. Zero means wait indefinitely. Setting any positive value will cause the getConnection() call to time-out and break with an SQLException after the specified number of milliseconds.

    connectionCustomizerClassName

    Default: null

    The fully qualified class-name of an implememtation of the ConnectionCustomizer interface, which users can implement to set up Connections when they are acquired from the database, or on check-out, and potentially to clean things up on check-in and Connection destruction. If standard Connection properties (holdability, readOnly, or transactionIsolation) are set in the ConnectionCustomizer's onAcquire() method, these will override the Connection default values.

    connectionTesterClassName

    Default: com.mchange.v2.c3p0.impl.DefaultConnectionTester

    The fully qualified class-name of an implememtation of the ConnectionTester interface, or QueryConnectionTester if you would like instances to have access to a user-configured preferredTestQuery. This can be used to customize how c3p0 DataSources test Connections, but with the introduction of automaticTestTable and preferredTestQuery configuration parameters, "rolling your own" should be overkill for most users. [See

    debugUnreturnedConnectionStackTraces

    Default: false

    If true, and if unreturnedConnectionTimeout is set to a positive value, then the pool will capture the stack trace (via an Exception) of all Connection checkouts, and the stack traces will be printed when unreturned checked-out Connections timeout. This is intended to debug applications with Connection leaks, that is applications that occasionally fail to return Connections, leading to pool growth, and eventually exhaustion (when the pool hits maxPoolSize with all Connections checked-out and lost). This parameter should only be set while debugging, as capturing the stack trace will slow down every Connection check-out.

    Does Not Support Per-User Overrides.

    factoryClassLocation

    Default: null

    DataSources that will be bound by JNDI and use that API's Referenceable interface to store themselves may specify a URL from which the class capable of dereferencing a them may be loaded. If (as is usually the case) the c3p0 libraries will be locally available to the JNDI service, leave this set as null.

    Does Not Support Per-User Overrides.

    forceIgnoreUnresolvedTransactions

    Default: false

    Strongly disrecommended. Setting this to true may lead to subtle and bizarre bugs. This is a terrible setting, leave it alone unless absolutely necessary. It is here to workaround broken databases / JDBC drivers that do not properly support transactions, but that allow Connections' autoCommit flags to go to false regardless. If you are using a database that supports transactions "partially" (this is oxymoronic, as the whole point of transactions is to perform operations reliably and completely, but nonetheless such databases are out there), if you feel comfortable ignoring the fact that Connections with autoCommit == false may be in the middle of transactions and may hold locks and other resources, you may turn off c3p0's wise default behavior, which is to protect itself, as well as the usability and consistency of the database, by either rolling back (default) or committing (see c3p0.autoCommitOnClose above) unresolved transactions. This should only be set to true when you are sure you are using a database that allows Connections' autoCommit flag to go to false, but offers no other meaningful support of transactions. Otherwise setting this to true is just a bad idea. [See ]

    idleConnectionTestPeriod

    Default: 0

    If this is a number greater than 0, c3p0 will test all idle, pooled but unchecked-out connections, every this number of seconds. [See ]

    initialPoolSize

    Default: 3

    Number of Connections a pool will try to acquire upon startup. Should be between minPoolSize and maxPoolSize. [See ]

    maxAdministrativeTaskTime

    Default: 0

    Seconds before c3p0's thread pool will try to interrupt an apparently hung task. Rarely useful. Many of c3p0's functions are not performed by client threads, but asynchronously by an internal thread pool. c3p0's asynchrony enhances client performance directly, and minimizes the length of time that critical locks are held by ensuring that slow jdbc operations are performed in non-lock-holding threads. If, however, some of these tasks "hang", that is they neither succeed nor fail with an Exception for a prolonged period of time, c3p0's thread pool can become exhausted and administrative tasks backed up. If the tasks are simply slow, the best way to resolve the problem is to increase the number of threads, via numHelperThreads. But if tasks sometimes hang indefinitely, you can use this parameter to force a call to the task thread's interrupt() method if a task exceeds a set time limit. [c3p0 will eventually recover from hung tasks anyway by signalling an "APPARENT DEADLOCK" (you'll see it as a warning in the logs), replacing the thread pool task threads, and interrupt()ing the original threads. But letting the pool go into APPARENT DEADLOCK and then recover means that for some periods, c3p0's performance will be impaired. So if you're seeing these messages, increasing numHelperThreads and setting maxAdministrativeTaskTime might help. maxAdministrativeTaskTime should be large enough that any resonable attempt to acquire a Connection from the database, to test a Connection, or two destroy a Connection, would be expected to succeed or fail within the time set. Zero (the default) means tasks are never interrupted, which is the best and safest policy under most circumstances. If tasks are just slow, allocate more threads. If tasks are hanging forever, try to figure out why, and maybe setting maxAdministrativeTaskTime can help in the meantime.

    Does Not Support Per-User Overrides.

    maxConnectionAge

    Default: 0

    Seconds, effectively a time to live. A Connection older than maxConnectionAge will be destroyed and purged from the pool. This differs from maxIdleTime in that it refers to absolute age. Even a Connection which has not been much idle will be purged from the pool if it exceeds maxConnectionAge. Zero means no maximum absolute age is enforced.

    maxIdleTime

    Default: 0

    Seconds a Connection can remain pooled but unused before being discarded. Zero means idle connections never expire. [See ]

    maxIdleTimeExcessConnections

    Default: 0

    Number of seconds that Connections in excess of minPoolSize should be permitted to remain idle in the pool before being culled. Intended for applications that wish to aggressively minimize the number of open Connections, shrinking the pool back towards minPoolSize if, following a spike, the load level diminishes and Connections acquired are no longer needed. If maxIdleTime is set, maxIdleTimeExcessConnections should be smaller if the parameter is to have any effect. Zero means no enforcement, excess Connections are not idled out.

    maxPoolSize

    Default: 15

    Maximum number of Connections a pool will maintain at any given time. [See ]

    maxStatements

    Default: 0

    The size of c3p0's global PreparedStatement cache. If both maxStatements and maxStatementsPerConnection are zero, statement caching will not be enabled. If maxStatements is zero but maxStatementsPerConnection is a non-zero value, statement caching will be enabled, but no global limit will be enforced, only the per-connection maximum. maxStatements controls the total number of Statements cached, for all Connections. If set, it should be a fairly large number, as each pooled Connection requires its own, distinct flock of cached statements. As a guide, consider how many distinct PreparedStatements are used frequently in your application, and multiply that number by maxPoolSize to arrive at an appropriate value. Though maxStatements is the JDBC standard parameter for controlling statement caching, users may find c3p0's alternative maxStatementsPerConnection more intuitive to use. [See ]

    maxStatementsPerConnection

    Default: 0

    The number of PreparedStatements c3p0 will cache for a single pooled Connection. If both maxStatements and maxStatementsPerConnection are zero, statement caching will not be enabled. If maxStatementsPerConnection is zero but maxStatements is a non-zero value, statement caching will be enabled, and a global limit enforced, but otherwise no limit will be set on the number of cached statements for a single Connection. If set, maxStatementsPerConnection should be set to about the number distinct PreparedStatements that are used frequently in your application, plus two or three extra so infrequently statements don't force the more common cached statements to be culled. Though maxStatements is the JDBC standard parameter for controlling statement caching, users may find maxStatementsPerConnection more intuitive to use. [See ]

    minPoolSize

    Default: 3

    Minimum number of Connections a pool will maintain at any given time. [See ]

    numHelperThreads

    Default: 3

    c3p0 is very asynchronous. Slow JDBC operations are generally performed by helper threads that don't hold contended locks. Spreading these operations over multiple threads can significantly improve performance by allowing multiple operations to be performed simultaneously.

    Does Not Support Per-User Overrides.

    overrideDefaultUser

    Default: null

    Forces the username that should by PooledDataSources when a user calls the default getConnection() method. This is primarily useful when applications are pooling Connections from a non-c3p0 unpooled DataSource. Applications that use ComboPooledDataSource, or that wrap any c3p0-implemented unpooled DataSource can use the simple user property.

    Does Not Support Per-User Overrides.

    overrideDefaultPassword

    Default: null

    Forces the password that should by PooledDataSources when a user calls the default getConnection() method. This is primarily useful when applications are pooling Connections from a non-c3p0 unpooled DataSource. Applications that use ComboPooledDataSource, or that wrap any c3p0-implemented unpooled DataSource can use the simple password property.

    Does Not Support Per-User Overrides.

    password

    Default: null

    For applications using ComboPooledDataSource or any c3p0-implemented unpooled DataSources — DriverManagerDataSource or the DataSource returned by DataSources.unpooledDataSource( ... ) — defines the password that will be used for the DataSource's default getConnection() method. (See also user.)

    Does Not Support Per-User Overrides.

    preferredTestQuery

    Default: null

    Defines the query that will be executed for all connection tests, if the default ConnectionTester (or some other implementation of QueryConnectionTester, or better yet FullQueryConnectionTester) is being used. Defining a preferredTestQuery that will execute quickly in your database may dramatically speed up Connection tests. (If no preferredTestQuery is set, the default ConnectionTester executes a getTables() call on the Connection's DatabaseMetaData. Depending on your database, this may execute more slowly than a "normal" database query.) NOTE: The table against which your preferredTestQuery will be run must exist in the database schema prior to your initialization of your DataSource. If your application defines its own schema, try automaticTestTable instead. [See ]

    propertyCycle

    Default: 0

    Maximum time in seconds before user configuration constraints are enforced. Determines how frequently maxConnectionAge, maxIdleTime, maxIdleTimeExcessConnections, unreturnedConnectionTimeout are enforced. c3p0 periodically checks the age of Connections to see whether they've timed out. This parameter determines the period. Zero means automatic: A suitable period will be determined by c3p0. [You can call getEffectivePropertyCycle...() methods on a c3p0 PooledDataSource to find the period automatically chosen.]

    testConnectionOnCheckin

    Default: false

    If true, an operation will be performed asynchronously at every connection checkin to verify that the connection is valid. Use in combination with idleConnectionTestPeriod for quite reliable, always asynchronous Connection testing. Also, setting an automaticTestTable or preferredTestQuery will usually speed up all connection tests. [See ]

    testConnectionOnCheckout

    Default: false

    Use only if necessary. Expensive. If true, an operation will be performed at every connection checkout to verify that the connection is valid. Better choice: verify connections periodically using idleConnectionTestPeriod. Also, setting an automaticTestTable or preferredTestQuery will usually speed up all connection tests. [See ]

    unreturnedConnectionTimeout

    Default: 0

    Seconds. If set, if an application checks out but then fails to check-in [i.e. close()] a Connection within the specified period of time, the pool will unceremoniously destroy() the Connection. This permits applications with occasional Connection leaks to survive, rather than eventually exhausting the Connection pool. And that's a shame. Zero means no timeout, applications are expected to close() their own Connections. Obviously, if a non-zero value is set, it should be to a value longer than any Connection should reasonably be checked-out. Otherwise, the pool will occasionally kill Connections in active use, which is bad. This is basically a bad idea, but it's a commonly requested feature. Fix your $%!@% applications so they don't leak Connections! Use this temporarily in combination with debugUnreturnedConnectionStackTraces to figure out where Connections are being checked-out that don't make it back into the pool!

    user

    Default: null

    For applications using ComboPooledDataSource or any c3p0-implemented unpooled DataSources — DriverManagerDataSource or the DataSource returned by DataSources.unpooledDataSource() — defines the username that will be used for the DataSource's default getConnection() method. (See also password.)

    Does Not Support Per-User Overrides.

    usesTraditionalReflectiveProxies

    Default: false

    c3p0 originally used reflective dynamic proxies for implementations of Connections and other JDBC interfaces. As of c3p0-0.8.5, non-reflective, code-generated implementations are used instead. As this was a major change, and the old codebase had been extensively used and tested, this parameter was added to allow users to revert of they had problems. The new, non-reflexive implementation is faster, and has now been widely deployed and tested, so it is unlikely that this parameter will be useful. Both the old reflective and newer non-reflective codebases are being maintained, but support for the older codebase may (or may not) be dropped in the future.


    posted on 2009-11-16 15:08 雪山飛鵠 閱讀(8223) 評論(2)  編輯  收藏 所屬分類: Hibernatespring

    Feedback

    # re: Spring 結合Hibernate 配置 C3P0 連接池 2009-11-18 09:19 keer
    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans"" target="_new">http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"" target="_new">http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee"" target="_new">http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx"" target="_new">http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"" target="_new">http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

    <!-- 引入參數配置文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" />
    <!-- bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <value>jdbc.properties</value>
    </list>
    </property>
    </bean-->

    <!-- 配置數據源 -->
    <!-- bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
    p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
    p:username="${jdbc.username}" p:password="${jdbc.password}" /-->

    <bean id="dataSource"
    class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close" p:driverClass="${jdbc.driverClassName}"
    p:jdbcUrl="${jdbc.url}" p:user="${jdbc.username}"
    p:password="${jdbc.password}"
    p:initialPoolSize="${jdbc.initialPoolSize}"
    p:minPoolSize="${jdbc.minPoolSize}"
    p:maxPoolSize="${jdbc.maxPoolSize}" />

    <!-- bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass"><value>${jdbc.driverClassName}</value></property>
    <property name="jdbcUrl"><value>${jdbc.url}</value></property>
    <property name="user"><value>${jdbc.username}</value></property>
    <property name="password"><value>${jdbc.password}</value></property>
    <property name="initialPoolSize"><value>${jdbc.initialPoolSize}</value></property>
    <property name="minPoolSize"><value>${jdbc.minPoolSize}</value></property>
    <property name="maxPoolSize"><value>${jdbc.maxPoolSize}</value></property>
    </bean-->

    <!-- 解決Oracle中Clob字段的問題(即:當字符在1000~2000時會報ora-01461的錯誤“僅可以為插入 LONG 列的 LONG 值賦值”) -->
    <!--
    <bean id="oracleLobHandler"
    class="org.springframework.jdbc.support.lob.OracleLobHandler"
    lazy-init="true">
    <property name="nativeJdbcExtractor"
    ref="nativeJdbcExtractor">
    </property>
    </bean>

    <bean id="nativeJdbcExtractor"
    class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"
    lazy-init="true" />
    -->

    <!-- Hibernate SessionFactory -->
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
    p:dataSource-ref="dataSource">
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    ${hibernate.dialect}
    </prop>
    <prop key="hibernate.show_sql">
    ${hibernate.show_sql}
    </prop>
    <prop key="hibernate.hbm2ddl.auto">
    ${hibernate.auto}
    </prop>
    <prop key="hibernate.generate_statistics">
    ${hibernate.generate_statistics}
    </prop>
    <prop key="hibernate.jdbc.fetch_size">
    ${hibernate.fetch_size}
    </prop>
    <prop key="hibernate.jdbc.batch_size">
    ${hibernate.batch_size}
    </prop>
    </props>
    </property>
    <property name="mappingDirectoryLocations">
    <list>
    <value>classpath:/com/keer/model/hbm</value>
    </list>
    </property>
    <!-- property name="eventListeners">
    <map>
    <entry key="merge">
    <bean
    class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener" />
    </entry>
    </map>
    </property-->
    <!-- property name="lobHandler" ref="oracleLobHandler" /-->
    </bean>

    <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"
    p:sessionFactory-ref="sessionFactory" />

    <!-- 配置tx/aop聲明式事務 -->
    <!-- 聲明一個切面 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
    <tx:method name="*" propagation="REQUIRED" />
    </tx:attributes>
    <!-- tx:attributes>
    <tx:method name="find*" propagation="REQUIRED"
    read-only="true" />
    <tx:method name="save*" propagation="REQUIRED" />
    <tx:method name="update*" propagation="REQUIRED" />
    <tx:method name="*" propagation="SUPPORTS" read-only="true" />
    </tx:attributes-->
    </tx:advice>

    <!-- 把切面注入到業務中 -->
    <aop:config>
    <aop:pointcut id="affectMethods"
    expression="execution(* com.keer.dao.*.*(..))" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="affectMethods" />
    </aop:config>

    </beans>  回復  更多評論
      

    # re: Spring 結合Hibernate 配置 C3P0 連接池 2009-11-18 09:19 keer
    請指教~~~~  回復  更多評論
      

    主站蜘蛛池模板: 337P日本欧洲亚洲大胆精品 | 国产妇乱子伦视频免费| 久久亚洲精品无码gv| 亚洲视频在线观看不卡| 亚洲无码黄色网址| 日日AV拍夜夜添久久免费| 在线视频精品免费| 久久国产精品免费看| 国产在线精品一区免费香蕉| 免费人妻精品一区二区三区| 亚洲欧美黑人猛交群| 亚洲一区二区三区四区视频| 亚洲精品视频在线| 亚洲中文字幕日产乱码高清app| 国产三级免费电影| 日韩免费观看的一级毛片| 西西大胆无码视频免费| 国产成人精品免费视| 99久9在线|免费| 99精品视频在线观看免费播放| 中文字幕免费在线观看动作大片| 搜日本一区二区三区免费高清视频| 国产亚洲精品AAAA片APP| 亚洲欧美国产日韩av野草社区| 自拍偷区亚洲国内自拍| 色噜噜亚洲男人的天堂| ASS亚洲熟妇毛茸茸PICS| 亚洲fuli在线观看| 亚洲国产视频久久| 亚洲人成网站999久久久综合| 亚洲人成欧美中文字幕| 亚洲国产高清国产拍精品| 亚洲国产精品18久久久久久| 精品久久久久久亚洲中文字幕| 亚洲av午夜国产精品无码中文字| 亚洲精品无码日韩国产不卡av| 亚洲人AV在线无码影院观看| 国产亚洲人成在线影院| 一区二区免费在线观看| 国产日韩AV免费无码一区二区三区| 久久精品无码免费不卡|