`

bboss persistent框架数据库连接池配置介

阅读更多
  • bboss项目下载列表 在sourceforge访问地址为:
    http://sourceforge.net/projects/bboss/files/

  •  概述
        bboss persistent的配置文件为poolman.xml,位于classes目录下即可
    1.bboss persistent框架支持多个数据源配置
    2.bboss persistent框架默认采用apache common dbcp作为数据库连接池
    3.bboss persistent框架可以引用外部数据源,例如tomcat,weblogic和WebSphere平台提供的datasource

 

  • 基本配置实例,只配置了一个datasource,如果需要配置多个datasource,只需要按照相应格式再加数据源就可以了:

<?xml version="1.0" encoding="gb2312"?>

<poolman>

 

  <datasource>
        <!--
        连接池的逻辑名称,
        应用程序通过该名称获取对应的数据库连接池的链接
        持久层接口通过指定该名称在相应的数据库上执行增删改查操作
         import java.sql.Connection;
         import java.sql.SQLException;
         import com.frameworkset.common.poolman.DBUtil;
         .....
        
         Connection con = DBUtil.getConection(“bspf”);
               
        -->
    <dbname>bspf</dbname>
    <!--
    数据库链接池启动时是否加载数据库表和视图的元数据 ,应用程序可以调用以下接口获取这些数据:
    import com.frameworkset.common.poolman.DBUtil;
    import com.frameworkset.common.poolman.sql.TableMetaData;
    ...
   
    TableMetaData tableMetaData = DBUtil.getTableMetaData("V_VCH_FIXED_TAX_CF");
               
        System.out.println(DBUtil.getTableMetaData("V_VCH_FIXED_TAX_CF"));
    -->
        <loadmetadata>false</loadmetadata>
        <!--
        datasource的jndi查找名称,如果指定了jndiName参数
        bboss persistent框架将链接池绑定为datasource,应用程序可以通过
        jndi查找获取数据库链接,例如:
         Context ctx = new InitialContext();
         DataSource ds =  (DataSource)ctx.lookup("bspf_datasource_jndiname");
         -->
    <jndiName>bspf_datasource_jndiname</jndiName>
    <!--
    autoprimarykey
        true表示启用insert自动补全功能,如果在insert sql语句中没有指定主键字段,那么bboss persistent将自动补全该条语句
        首先分析sql语句得到table name,然后根据该表名到tableinfo表中查找表的主键信息,找到后根据主键配置生成一个主键,补全到sql语句中
        当执行插入操作的方法时,该主键将作为方法的返回值返回给调用程序。
    false表示不自动生成,默认值,这样避免分析sql语句,提高系统性能。
         -->
    <autoprimarykey>false</autoprimarykey>
     <!--
    cachequerymetadata 是否缓冲查询语句中查询列表中的字段信息
        true表示缓冲,提高系统新能,一旦系统内存不够时,将自动释放这些缓冲
        false,表示不缓冲
         -->
    <cachequerymetadata>false</cachequerymetadata>
     <!--
    driver 指定数据库驱动程序
         -->
    <driver>oracle.jdbc.driver.OracleDriver</driver>
     <!--
    url 指定数据库连接串
         -->
        <url>jdbc:oracle:thin:@//localhost:1521/orcl</url>
         <!--
    username 指定数据库用户
         -->
    <username>cmsnew</username>
     <!--
    password 指定数据库用户口令
         -->
    <password>cmsnew</password>
    <!--
    txIsolationLevel 指定数据库事务隔离级别
         -->
        <txIsolationLevel>READ_COMMITTED</txIsolationLevel>
         <!--
    initialConnections 指定数据库连接池初始连接数
         -->
    <initialConnections>2</initialConnections>
     <!--
    minimumSize 指定数据库连接池最小连接数
         -->
    <minimumSize>2</minimumSize>
     <!--
    maximumSize 指定数据库连接池最大连接数
         -->
    <maximumSize>8</maximumSize>
        <!--控制connection达到maximumSize是否允许再创建新的connection
                true:允许,缺省值
                false:不允许-->
    <maximumSoft>false</maximumSoft>
    <!--
    是否检测超时链接(事务超时链接),当数据库连接资源不够时,才会检测,否则不检测
    true-检测,如果检测到有事务超时的链接,系统将强制回收(释放)该链接
    false-不检测,默认值
     -->
    <removeAbandoned>true</removeAbandoned>
        <!--
                链接使用超时时间(事务超时时间)
                单位:秒
        -->
    <userTimeout>120</userTimeout>
    <!--
            系统强制回收链接时,是否输出后台日志
            true-输出,默认值
            false-不输出
     -->
    <logAbandoned>true</logAbandoned>
   
    <!--
            数据库会话是否是readonly,缺省为false
     -->
    <readOnly>true</readOnly>
       
        <!--
                对应属性:timeBetweenEvictionRunsMillis
                the amount of time (in seconds) to sleep between examining idle objects for eviction
                空闲链接超时检测处理启动间隔时间
                单位:秒
        -->
        <skimmerFrequency>864000</skimmerFrequency>
        <!--对应于minEvictableIdleTimeMillis 属性:
        minEvictableIdleTimeMillis the minimum number of milliseconds
        an object can sit idle in the pool before it is eligable for evcition
        单位:秒
       
        空闲链接回收时间,空闲时间超过指定的值时,将被回收
       
        -->
        <connectionTimeout>12000000</connectionTimeout>
        <!--
        numTestsPerEvictionRun
        the number of idle objects to
        examine per run within the idle object eviction thread (if any)
       
        每次检测时,检测的空闲链接个数 ,为零时检测所有的空闲链接
        -->
    <shrinkBy>4</shrinkBy>
    <!--
    /**
     * 检测空闲链接处理时,是否对空闲链接进行有效性检查控制开关
     * true-检查,都检查到有无效链接时,直接销毁无效链接
     * false-不检查,缺省值
     */
     -->
    <testWhileidle>false</testWhileidle>


    <!--
       (1) 在tableinfo表中配置了sequence时,以下机制不起作用,
        定义数据库主键生成机制
        缺省的采用系统自带的主键生成机制,
        外步程序可以覆盖系统主键生成机制
        由值来决定
        auto:自动,一般在生产环境下采用该种模式,
               解决了单个应用并发访问数据库添加记录产生冲突的问题,效率高,如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式
        composite:结合自动和实时从数据库中获取最大的主键值两种方式来处理,开发环境下建议采用该种模式,
                   解决了多个应用同时访问数据库添加记录时产生冲突的问题,效率相对较低, 如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式
                  
      (2)通过以下方法获取主键
   DBUtil中的下述方法获取主键
       DBUtil.getNextPrimaryKey(Connection, tablename)
       DBUtil.getNextPrimaryKey(Connection, dbname, tablename)
       DBUtil.getNextPrimaryKey(tablename)
       DBUtil.getNextPrimaryKey(dbname, tablename)
       DBUtil.getNextStringPrimaryKey(Connection, tablename)
       DBUtil.getNextStringPrimaryKey(Connection, dbname, tablename)
       DBUtil.getNextStringPrimaryKey(tablename)
       DBUtil.getNextStringPrimaryKey(dbname, tablename)
      
       前提是tablename对应的表的主键信息必须配置在tableinfo表中,tableinfo表的结构为:

 名称                                      是否为空? 类型                              描述
 ----------------------------------------- -------- ----------------------------

 TABLE_NAME                                NOT NULL VARCHAR2(255)          表名称
 TABLE_ID_NAME                                      VARCHAR2(255)          表的主键名称
 TABLE_ID_INCREMENT                                 NUMBER(5)              表主键的自增值
 TABLE_ID_VALUE                                     NUMBER(20)             表主键当前值,已经不使用
 TABLE_ID_GENERATOR                                 VARCHAR2(255)          表主键生成机制,只有TABLE_ID_TYPE为sequence时才需填为相应sequence的名称
 TABLE_ID_TYPE                                      VARCHAR2(255)          表主键的数值类型,int,long,string,sequence,如果为sequence时必须指定TABLE_ID_GENERATOR为对应的sequence的名称
 TABLE_ID_PREFIX                                    VARCHAR2(255)          为表主键添加统一的前缀,默认为null,只有表主键类型为string时才能指定前缀。
       
    -->
    <keygenerate>composite</keygenerate>

       
    <!-- 请求链接时等待时间,单位:秒
    客服端程序请求链接等待时间,超过指定值时后台包报待超时异常
     -->
    <maxWait>10</maxWait>
   
    <!--
            链接有效性检查sql语句
     -->
    <validationQuery>select 1 from dual</validationQuery>
        <!-- 如果在tableinfo表中配置了表的主键信息,而且主键通过sequence生成,则synsequence元素
        用来控制是否同步sequence的当前值为最大的未使用的表的主键值+1。
       
         -->
    <synsequence>false</synsequence>
   
    <!-- 每个connection预编译statement池化标记
    true:池化
    false:不池化,默认值
     -->
    <poolingPreparedStatements>false</poolingPreparedStatements>
    <!--
           
            每个connection最大打开的预编译statements数-1
     -->
    <maxOpenPreparedStatements>-1</maxOpenPreparedStatements>
    <!--
   
                设置为true,则相关的增删改查,批处理,预编译处理,存储函数调用sql语句将全部被输出的系统后台
                否则不输出
     -->
    <showsql>true</showsql>
  </datasource>
</poolman>

  • 外部数据源实例
    <?xml version="1.0" encoding="gb2312"?>

<poolman>


<datasource external=“true”>
        <!--
        连接池的逻辑名称,
        应用程序通过该名称获取对应的数据库连接池的链接
        持久层接口通过指定该名称在相应的数据库上执行增删改查操作
         import java.sql.Connection;
         import java.sql.SQLException;
         import com.frameworkset.common.poolman.DBUtil;
         .....
        
         Connection con = DBUtil.getConection(“bspf”);
               
        -->
    <dbname>bspf</dbname>
    <!--
    数据库链接池启动时是否加载数据库表和视图的元数据 ,应用程序可以调用以下接口获取这些数据:
    import com.frameworkset.common.poolman.DBUtil;
    import com.frameworkset.common.poolman.sql.TableMetaData;
    ...
   
    TableMetaData tableMetaData = DBUtil.getTableMetaData("V_VCH_FIXED_TAX_CF");
               
        System.out.println(DBUtil.getTableMetaData("V_VCH_FIXED_TAX_CF"));
    -->
        <loadmetadata>false</loadmetadata>
        <!--
        datasource的jndi查找名称,如果指定了jndiName参数
        bboss persistent框架将链接池绑定为datasource,应用程序可以通过
        jndi查找获取数据库链接,例如:
         Context ctx = new InitialContext();
         DataSource ds =  (DataSource)ctx.lookup("bspf_datasource_jndiname");
         -->
    <jndiName>bspf_datasource_jndiname</jndiName>
   <!--
            当dataSource的external属性指定为true时,必须指定外部数据源jndi绑定名称
            如果系统需要通过内部的jndi查找该数据源,还必须指定jndiName名称,比如系统管理中hibernate
            必需通过内部jndi访问数据源来获取数据库的链接,以及应用hibernate产生自定义数据库主键机制
    -->
    <externaljndiName>external_bspf_datasource_jndiname</externaljndiName>
    <!--
    autoprimarykey
        true表示启用insert自动补全功能,如果在insert sql语句中没有指定主键字段,那么bboss persistent将自动补全该条语句
        首先分析sql语句得到table name,然后根据该表名到tableinfo表中查找表的主键信息,找到后根据主键配置生成一个主键,补全到sql语句中
        当执行插入操作的方法时,该主键将作为方法的返回值返回给调用程序。
    false表示不自动生成,默认值,这样避免分析sql语句,提高系统性能。
         -->
    <autoprimarykey>false</autoprimarykey>
     <!--
    cachequerymetadata 是否缓冲查询语句中查询列表中的字段信息
        true表示缓冲,提高系统新能,一旦系统内存不够时,将自动释放这些缓冲
        false,表示不缓冲
         -->
    <cachequerymetadata>false</cachequerymetadata>
     <!--
    driver 指定数据库驱动程序,外部数据源需要指定数据库的驱动程序是为了识别不同类型的数据库
         -->
    <driver>oracle.jdbc.driver.OracleDriver</driver>

    <!--
       (1) 在tableinfo表中配置了sequence时,以下机制不起作用,
        定义数据库主键生成机制
        缺省的采用系统自带的主键生成机制,
        外步程序可以覆盖系统主键生成机制
        由值来决定
        auto:自动,一般在生产环境下采用该种模式,
               解决了单个应用并发访问数据库添加记录产生冲突的问题,效率高,如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式
        composite:结合自动和实时从数据库中获取最大的主键值两种方式来处理,开发环境下建议采用该种模式,
                   解决了多个应用同时访问数据库添加记录时产生冲突的问题,效率相对较低, 如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式
                  
      (2)通过以下方法获取主键
   DBUtil中的下述方法获取主键
       DBUtil.getNextPrimaryKey(Connection, tablename)
       DBUtil.getNextPrimaryKey(Connection, dbname, tablename)
       DBUtil.getNextPrimaryKey(tablename)
       DBUtil.getNextPrimaryKey(dbname, tablename)
       DBUtil.getNextStringPrimaryKey(Connection, tablename)
       DBUtil.getNextStringPrimaryKey(Connection, dbname, tablename)
       DBUtil.getNextStringPrimaryKey(tablename)
       DBUtil.getNextStringPrimaryKey(dbname, tablename)
      
       前提是tablename对应的表的主键信息必须配置在tableinfo表中,tableinfo表的结构为:

 名称                                      是否为空? 类型                              描述
 ----------------------------------------- -------- ----------------------------

 TABLE_NAME                                NOT NULL VARCHAR2(255)          表名称
 TABLE_ID_NAME                                      VARCHAR2(255)          表的主键名称
 TABLE_ID_INCREMENT                                 NUMBER(5)              表主键的自增值
 TABLE_ID_VALUE                                     NUMBER(20)             表主键当前值,已经不使用
 TABLE_ID_GENERATOR                                 VARCHAR2(255)          表主键生成机制,只有TABLE_ID_TYPE为sequence时才需填为相应sequence的名称
 TABLE_ID_TYPE                                      VARCHAR2(255)          表主键的数值类型,int,long,string,sequence,如果为sequence时必须指定TABLE_ID_GENERATOR为对应的sequence的名称
 TABLE_ID_PREFIX                                    VARCHAR2(255)          为表主键添加统一的前缀,默认为null,只有表主键类型为string时才能指定前缀。
       
    -->
    <keygenerate>composite</keygenerate>
<!-- 如果在tableinfo表中配置了表的主键信息,而且主键通过sequence生成,则synsequence元素
        用来控制是否同步sequence的当前值为最大的未使用的表的主键值+1。
       
         -->
    <synsequence>false</synsequence>
   

    <!--
   
             设置为true,则相关的增删改查,批处理,预编译处理,存储函数调用sql语句将全部被输出的系统后台
                否则不输出
     -->
    <showsql>true</showsql>
  </datasource>
</poolman>

 

 

0
0
分享到:
评论

相关推荐

    bboss persistent 1.0.2中方便地实现大字段(clob,blob)的处理

    BBoss Persistent是一个轻量级的持久层框架,它提供了方便的方式来处理这些大字段。本文将深入探讨在BBoss Persistent 1.0.2中如何高效地管理CLOB和BLOB数据。 首先,CLOB用于存储大量的文本数据,如长篇文章或XML...

    基于Java的bboss开源框架设计源码

    该项目是基于Java语言的bboss开源框架构建的设计源码,包含3075个文件,涵盖2700个Java源文件、85个XML配置文件、52个HTML文件、39个properties和prefs文件、23个GIF图片、18个Gradle文件、17个gitignore文件、10个...

    bboss ioc配置文件中使用外部属性文件介绍

    当需要使用外部属性文件时,我们可以创建一个独立的`.properties`文件,如`config.properties`,这个文件可以包含应用程序的配置参数,如数据库连接字符串、服务器端口等。 在`config.properties`中,键值对的形式...

    bboss mvcdemo 下载地址

    - 安装与配置指南:如何下载和设置BBoss MVCDemo环境,包括JDK、应用服务器(如Tomcat)、数据库等的配置。 - 快速入门:简单的示例展示如何创建第一个BBoss MVCDemo应用,包括编写控制器、模型和视图。 - 请求处理...

    企业级J2EE开源框架bboss

    BBoss(全称为bbossgroups)是一个专为企业级J2EE应用设计的开源框架,它为Java开发者提供了一系列强大的工具和服务,以简化Web应用程序的开发过程。该框架旨在提高开发效率,降低维护成本,同时保持高度的灵活性和...

    基于bboss框架的全面设计源码自动生成工具

    该工具是一款基于bboss...此工具能够自动生成bboss MVC、IOC、持久化、JSP、i18n、SQL配置文件、Web服务、Hessian服务等相关源代码,适用于快速开发和项目迭代。详细文档请参考:http://yin-bp.iteye.com/blog/2256948

    由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能

    bboss-datatran 支持多种数据源的接入,如关系型数据库(MySQL、Oracle等)、NoSQL数据库(HBase、MongoDB等)、消息队列(Kafka、RabbitMQ等)以及文件系统(HDFS、FTP等)。通过内置的适配器,用户可以方便地将...

    bboss elasticsearch-5.7.8.rar

    3. `bboss-util-5.5.0.jar`和`bboss-persistent-5.5.0.jar`:这是BBoss框架的核心组件,提供了许多实用工具类和持久化操作支持,如数据库连接、事务管理等,为Elasticsearch的数据导入提供底层支持。 4. `...

    基于bboss新版平台项目环境搭建和代码工具使用视频教程.rar

    5. **数据库连接**:bboss通常需要与数据库进行交互,所以要确保你有合适的数据库服务器(如MySQL、Oracle等)并配置相应的数据库连接参数。 6. **启动服务器**:根据bboss提供的文档,启动内置的应用服务器(如...

    bboss-db-elasticsearch-tool-master_java_

    在Java中,传统的JDBC编程方式往往需要编写大量重复的SQL代码,而ORM框架如BBoss-DB-Elasticsearch-Tool则通过元数据(如注解或XML配置)将Java对象与数据库表映射起来,实现了数据的透明访问。这极大地提高了开发...

    bbossgroups 开发系列文章之一 最佳实践

    在配置文件中,可以设定数据库连接池、事务管理等,以实现高效的数据库操作。 DAO组件管理涉及到如何管理和注入数据库访问组件。DAO(Data Access Object)是访问数据库的对象,通常包含对数据库的基本操作方法。...

    springboot整合bboss es增删改查测试demo代码

    单集群演示功能测试用例,spring boot配置项以spring.elasticsearch.bboss开头 对应的配置文件为application.properties文件 多集群测试用例:eshelloword-spring-boot-starter\src\test\java\org\bboss\...

    bboss+es基本操作示例.zip

    集成bboss和Elasticsearch时,首先需要在项目中引入bboss的依赖,并配置Elasticsearch的相关连接信息,如集群名称、节点地址等。然后可以通过bboss提供的API进行索引创建、数据插入、查询、更新、删除等操作。 4. ...

    bboss mvc 通过jsonp实现跨站跨域远程访问

    标题中的“bboss mvc 通过jsonp实现跨站跨域远程访问”指的是使用bboss MVC框架来处理JSONP(JSON with Padding)请求,以克服浏览器的同源策略限制,实现跨域数据交互。bboss MVC是一个Java Web开发框架,它提供了...

    bboss 安全认证过滤器功能介绍

    SYSAuthenticateFilter就是BBoss框架中专门用于安全认证的过滤器,它负责拦截请求,检查用户是否已经登录并拥有访问特定资源的权限。 首先,我们来看一下`SYSAuthenticateFilter.java`这个文件。作为过滤器的实现类...

    bboss-elasticsearch开发环境搭建和开发入门视频教程.

    5. **配置BBoss**: 根据项目需求,配置 BBoss 的连接参数,如集群地址、端口等。 **四、开发入门** 1. **创建索引**: 使用 BBoss 提供的 API 创建索引,指定映射(Mapping)以便对数据类型进行定义。 2. **插入数据...

    bboss会话共享培训文档

    bboss会话共享是一种分布式会话管理技术,它针对在集群环境下应用部署时如何解决会话数据丢失和单点登录问题提供了专门的解决方案。根据提供的文档内容,我们可以详细探讨bboss会话共享涉及的关键知识点。 首先,...

    J2EE企业级开源框架bboss v5.0.6.8

    bboss是一个j2ee开源框架,为企业级应用开发提供一站式解决方案,并能有效地支撑移动应用开发。bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会话共享,cxfwebservice服务发布...

Global site tag (gtag.js) - Google Analytics