dataSource 数据源类型有哪些
有三种内建的数据源类型(也就是 type=”[UNPOOLED|POOLED|JNDI]”): UNPOOLED 这个数据源的实现只是每次被请求时打开和关闭连接。虽然有一点慢,它对在及时可用连接方面没有性能要求的简单应用程序是一个很好的选择。UNPOOLED 类型的数据源仅仅需要配置以下 5 种属性:
属性 | 描述 |
---|---|
driver | 这是 JDBC 驱动的 Java 类的完全限定名。 |
url | 这是数据库的 JDBC URL 地址。 |
username | 登录数据库的用户名。 |
password | 登录数据库的密码。 |
defaultTransactionIsolationLevel | 默认的连接事务隔离级别。 |
driver.encoding | UTF8(可选项) |
POOLED 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 使得并发 Web 应用可以快速响应请求。
除了上述提到 UNPOOLED 下的属性外,会有更多属性用来配置 POOLED 的数据源:
属性 | 描述 |
---|---|
poolMaximumActiveConnections | 在任意时间可以同时使用的最大连接数量,默认值:10 |
poolMaximumIdleConnections | 任意时间可能存在的空闲连接数,经验值建议设置与poolMaximumActiveConnections相同即可 |
poolMaximumCheckoutTime | 获取链接时如果没有idleConnection同时activeConnection达到最大值,则从activeConnections列表第一个链接开始(即最先开始的链接,也最可能快速结束),检查是否超过该设置的时间,如果超过,则被强制失效,返回链接。默认值为20000毫秒(即 20 秒),建议设置在预期最大的SQL执行时间。 |
poolTimeToWait | 这是一个底层设置,如果获取连接花费相当长的时间,它会给连接池打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直安静的失败),默认值:20000 毫秒(即 20 秒)。 |
poolPingQuery | 发送到数据库的侦测查询,用来检验连接是否处在正常工作秩序中并准备接受请求。默认是“NO PING QUERY SET”,建议使用select 1,开销小 |
poolPingEnabled | 是否启用侦测查询。若开启,也必须使用一个可执行的 SQL 语句设置 poolPingQuery 属性(最好是一个非常快的 SQL),默认值:false,建议启用,防止服务器端异常关闭,导致客户端错误。 |
poolPingConnectionsNotUsedFor | 用来配置poolPingQuery多长时间被调用一次。可以被设置匹配标准的数据库链接超时时间,来避免不必要的侦测。默认值0(也就是所有链接每一时刻都被侦测到,但仅仅当poolPingEnabled为true时适用)。建议小于服务器端超时时间,MySQL默认超时是8小时。 |
JNDI 这个数据源是为了使用如Spring或应用服务器这类的容器,容器可以集中或在外部配置数据源,然后设置JNDI上下文的引用。 这个数据源只需要配置两个属性:
属性 | 描述 |
---|---|
initial_context | 这个属性用来在 InitialContext 中寻找上下文(即,initialContext.lookup(initial_context))。这是个可选属性,如果忽略,那么 data_source 属性将会直接从 InitialContext 中寻找。 |
data_source | 这是引用数据源实例位置的上下文的路径。提供了 initial_context 配置时会在其返回的上下文中进行查找,没有提供时则直接在 InitialContext 中查找。 |
和其他数据源配置类似,可以通过添加前缀“env.”直接把属性传递给初始上下文。比如: env.encoding=UTF8