- 浏览: 697870 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
bboss持久层为了提升数据库查询操作性能,提供了对查询字段信息、字段对应的java filed名称信息等元数据(后文统称为查询元数据)进行缓存的机制,bboss持久层为数据源额外提供了控制参数cachequerymetadata来控制是否缓存这些查询元数据。cachequerymetadata为true时开启缓存机制,为false时关闭缓存机制,默认为true。
cachequerymetadata的设置方法。在poolman.xml文件的datasource元素中进行配置,实例如下:
对于缓存查询元数据的缓存容器和缓存key的说明:
缓存容器,根据程序使用的查询组件有不同的容器
ConfigSQLExecutor组件:
一个ConfigSQLExecutor组件加载一个xml配置文件,同时也会为这个ConfigSQLExecutor组件创建一个查询元数据缓存容器,当xml文件中的sql语句被修改后,ConfigSQLExecutor组件会重新loadxml文件的sql,同时也会重置对应的查询元数据缓存容器。这个缓存容器中缓存查询元数据的key,可能是配置的sql对应的别名,也可能是经过bboss解析后最终生成的sql语句。
例如下面的sql就是以getCopyTaskReadUsers作为查询元数据的缓存key:
getCopyTaskReadUsers之所以能作为缓存key是因为对应的sql是一条确定的sql语句,没有velocity动态变量(类似$varname格式的变量),也没用velocity动态逻辑判断和foreach循环语句。下面的sql就不能用名称getUserReaderCopyTasks作为缓存key:
因为getUserReaderCopyTasks对应的sql根据实际运行的参数不同而不同,所以必须以最终生成的sql作为元数据的查询元数据缓存key。
SQLExecutor组件/PreparedDBUtil组件:由于这两个组件直接使用sql语句进行查询,所以他们统一使用一个全局查询元数据容器,只有在jvm退出时,这个全局容器才会被销毁。这个容器缓存查询元数据是以sql语句作为缓存key。
缓存的元数据全部采用软缓存SoftReference,在jvm内存不够时会进行自动回收。
当以sql作为查询元数据缓存key时,如果sql语句中包含查询通配符*时,如果在数据库表中增加了字段,但是应用没有重启,可能会导致or mapping机制不能正确工作,所以如果数据在有以下查询sql语句的情况下:select n.*,t.name from a n,b m where n.id = m.fid,往a表中增加了字段,需要重启一下应用,否则缓存的元数据会没有包含新的a表中新加的字段,导致o/r mapping不能正确工作,或者将n.*改为查询具体的字段,也不会存在问题,例如:n.id,n.name等等。
cachequerymetadata的设置方法。在poolman.xml文件的datasource元素中进行配置,实例如下:
<datasource> <dbname>bspf</dbname> <loadmetadata>false</loadmetadata> <enablejta>true</enablejta> <jndiName>druid_datasource_jndiname</jndiName> <datasourceFile>druid-mysql.xml</datasourceFile> <autoprimarykey>false</autoprimarykey> <showsql>true</showsql> <keygenerate>composite</keygenerate> <cachequerymetadata>true</cachequerymetadata> </datasource>
对于缓存查询元数据的缓存容器和缓存key的说明:
缓存容器,根据程序使用的查询组件有不同的容器
ConfigSQLExecutor组件:
一个ConfigSQLExecutor组件加载一个xml配置文件,同时也会为这个ConfigSQLExecutor组件创建一个查询元数据缓存容器,当xml文件中的sql语句被修改后,ConfigSQLExecutor组件会重新loadxml文件的sql,同时也会重置对应的查询元数据缓存容器。这个缓存容器中缓存查询元数据的key,可能是配置的sql对应的别名,也可能是经过bboss解析后最终生成的sql语句。
例如下面的sql就是以getCopyTaskReadUsers作为查询元数据的缓存key:
<property name="getCopyTaskReadUsers"> <![CDATA[ select ID, copyid, COPORG, COPER, PROCESS_ID, PROCESS_KEY, BUSINESSKEY, COPYTIME, READTIME, ACT_ID, act_name, act_instid, COPERCNName from td_wf_hi_copytask where act_instid=? and COPER is not null ORDER by READTIME asc ]]> </property>
getCopyTaskReadUsers之所以能作为缓存key是因为对应的sql是一条确定的sql语句,没有velocity动态变量(类似$varname格式的变量),也没用velocity动态逻辑判断和foreach循环语句。下面的sql就不能用名称getUserReaderCopyTasks作为缓存key:
<property name="getUserReaderCopyTasks"> <![CDATA[ select ID, copyid, COPORG, COPER, PROCESS_ID, PROCESS_KEY, BUSINESSKEY, COPYTIME, READTIME, ACT_ID, act_name, act_instid, COPERCNName from td_wf_hi_copytask where 1=1 and #if(!$isAdmin) COPER=#[user] #end #if($process_key && !$process_key.equals("")) and PROCESS_KEY = #[process_key] #end #if($businesskey && !$businesskey.equals("")) and BUSINESSKEY = #[businesskey] #end ORDER by READTIME asc ]]> </property>
因为getUserReaderCopyTasks对应的sql根据实际运行的参数不同而不同,所以必须以最终生成的sql作为元数据的查询元数据缓存key。
SQLExecutor组件/PreparedDBUtil组件:由于这两个组件直接使用sql语句进行查询,所以他们统一使用一个全局查询元数据容器,只有在jvm退出时,这个全局容器才会被销毁。这个容器缓存查询元数据是以sql语句作为缓存key。
缓存的元数据全部采用软缓存SoftReference,在jvm内存不够时会进行自动回收。
当以sql作为查询元数据缓存key时,如果sql语句中包含查询通配符*时,如果在数据库表中增加了字段,但是应用没有重启,可能会导致or mapping机制不能正确工作,所以如果数据在有以下查询sql语句的情况下:select n.*,t.name from a n,b m where n.id = m.fid,往a表中增加了字段,需要重启一下应用,否则缓存的元数据会没有包含新的a表中新加的字段,导致o/r mapping不能正确工作,或者将n.*改为查询具体的字段,也不会存在问题,例如:n.id,n.name等等。
发表评论
-
bboss 持久层数据源引用外部属性配置介绍
2018-12-29 21:47 1099bboss 持久层数据源外部属性配置引用介绍 bboss持久 ... -
bboss持久层开启和关闭自带主键机制
2017-08-17 11:56 756bboss持久层开启和关闭自带主键机制 请访问文档: bbos ... -
bboss高性能db批处理功能使用方法介绍
2017-05-14 21:28 2148bboss持久层在v5.0.3.5中新增简单的高效的db批处理 ... -
bboss持久层公共sql片段定义和引用方法说明
2017-03-03 13:05 1131bboss持久层公共sql片段定义和引用方法说明 在配置sq ... -
最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法
2016-12-15 10:24 1367在使用最新的mysql-connector-java 6.0. ... -
持久层快速入门系列一
2016-08-19 13:00 1266持久层快速入门 先在应用中导入bboss 持久层(bboss ... -
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
2016-08-10 16:04 922首先在项目中导入bboss 持久层包: maven坐标 & ... -
bboss 持久层sql xml配置文件编写和加载方法介绍
2016-04-05 13:14 1699bboss 持久层sql xml配置文件编写和加载方法介绍 通 ... -
bboss持久层设置数据库查询fetchsize参数方法
2015-11-06 11:54 1019bboss持久层设置数据库查询fetchsize参数方法 j ... -
bboss持久层快速入门教程
2015-09-19 13:49 1594bboss持久层快速入门教程,快速搭建bboss持久层的开 ... -
bboss持久层数据库适配器编写和注册方法
2015-02-06 15:21 978bboss持久层数据库适配器编写和注册方法 bboss持久层默 ... -
bboss模糊查询、动态sql、批处理资料荟萃
2015-01-30 12:03 2376bboss模糊查询、动态sql、批处理资料荟萃 bboss持 ... -
bboss内置数据源apache dbcp与druid数据源切换方法
2014-09-23 09:59 1391bboss内置数据源与druid数据源切换方法 bboss内置 ... -
bboss持久层多数据源配置及多数据库事务控制使用方法
2014-05-11 20:24 2980bboss持久层多数据源配置及使用方法,持久层框架及demo下 ... -
bboss持久层demo使用说明
2014-03-11 09:38 1219持久层案例可以用svn客户端下载eclipse工程,导入ecl ... -
bboss持久层More分页查询API使用介绍
2013-10-18 16:17 1486为了更好地提高数据库分页查询的效率,bboss持久层在Conf ... -
bboss持久层操作Clob和Blob字段示例
2013-09-09 13:29 1232bboss持久层操作Clob和Blob非常方便,基于bboss ... -
bboss持久层ormaping机制详解
2013-09-04 21:04 1162bboss持久层针对db操作即提供了原始sql语句的支持,又提 ... -
bboss持久层改进支持模块sql配置文件引用其它模块sql配置文件中sql语句
2013-09-01 22:23 936bboss持久层改进支持模块sql配置文件引用其它模块sql配 ... -
bboss持久层sql语句输出到log4j日志文件设置
2013-08-15 20:17 1188bboss持久层sql语句输出到log4j日志文件设置 po ...
相关推荐
**bboss-datatran** 是一个由 **bboss** 社区开源的高效数据处理工具,专注于数据采集、数据清洗转换以及数据入库等任务。它实现了流批一体化的数据处理能力,使得用户能够灵活地应对实时和批量的数据处理场景。在...
bboss-plugins project.包含kafka、log4j、spring、dubbo、activemq、word转pdf、pdf转swf项目,持久层hibernate/hibernate4插件
bboss-datatran 由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能。 同时也是一个高性能Elasticsearch orm 客户端,100%兼容es各个版本 ...
7. **性能优化**:BBoss MVCDemo对请求处理进行了优化,比如支持缓存机制,可以显著提高应用的响应速度。 8. **易用性与灵活性**:BBoss MVCDemo具有良好的文档支持,提供了丰富的API和示例,降低了学习曲线。同时...
该项目为bboss插件集的Java设计源码,总计277个文件,涵盖163个Java源文件、22个XML配置文件、14个Gradle构建脚本、13个Git忽略规则、13个属性文件以及少量的JavaScript、HTML、CSS和Shell脚本,主要用于文档转换和...
2. **数据库操作**:BBoss提供了便捷的数据访问层(DAO),支持SQL动态生成、事务管理以及多种数据库的兼容性,使得数据库操作变得简单且高效。 3. **服务治理**:框架内置了服务注册与发现机制,可以实现微服务...
bboss会话共享是一种分布式会话管理技术,它针对在集群环境下应用部署时如何解决会话数据丢失和单点登录问题提供了专门的解决方案。根据提供的文档内容,我们可以详细探讨bboss会话共享涉及的关键知识点。 首先,...
在Java中,传统的JDBC编程方式往往需要编写大量重复的SQL代码,而ORM框架如BBoss-DB-Elasticsearch-Tool则通过元数据(如注解或XML配置)将Java对象与数据库表映射起来,实现了数据的透明访问。这极大地提高了开发...
本实例是一个基于bboss es spring boot starter的demo maven工程,可供spring boot项目集成bboss elasticsearch rest client参考 展示了通过spring boot管理单集群功能和管理多集群功能 单集群测试用例:...
BBoss Persistent是一个轻量级的持久层框架,它提供了方便的方式来处理这些大字段。本文将深入探讨在BBoss Persistent 1.0.2中如何高效地管理CLOB和BLOB数据。 首先,CLOB用于存储大量的文本数据,如长篇文章或XML...
springboot集成ElasticsearchBboss调用Elasticsearch的案例分享
2. **bboss elasticsearch开发入门教程.wmv**: 通过实例演示,讲解如何使用BBoss进行索引操作、数据插入、查询和更新,帮助初学者快速上手。 **六、资料阅读** "说明.txt" 文件可能包含了关于这些教程的详细步骤和...
然后可以通过bboss提供的API进行索引创建、数据插入、查询、更新、删除等操作。 4. **DSL操作** Domain Specific Language是bboss支持的一种面向领域的特定语言,允许开发者使用JSON格式定义查询和更新语句。DSL...
6. **会话超时与退出**:为了防止会话固定攻击,BBoss框架会设置会话超时机制。此外,用户可以通过点击退出按钮来清除会话,此时`SYSAuthenticateFilter`会确保所有相关的认证信息从会话中移除。 通过阅读`...
3. `bboss-util-5.5.0.jar`和`bboss-persistent-5.5.0.jar`:这是BBoss框架的核心组件,提供了许多实用工具类和持久化操作支持,如数据库连接、事务管理等,为Elasticsearch的数据导入提供底层支持。 4. `...
本bboss-datatran项目基于Java开发,包含591个文件,包括Java源代码、...系统实现了数据采集、数据清洗转换处理、数据入库以及数据指标统计计算的流批一体化处理功能,界面友好,功能完善,适合用于数据采集与处理。
4. **缓存机制**:内置了缓存管理,可以有效提高数据读取速度,减轻数据库压力。 5. **权限控制**:BBoss提供了完善的权限管理机制,支持角色、菜单、操作级别的权限分配。 6. **国际化支持**:框架内置了多语言支持...
本培训文档将介绍集群session管理的发展历史、bbosssession的架构及特点、性能指标、与应用的集成方式、部署模式以及场景演示等,旨在帮助技术人员理解并掌握bbosssession的使用方法和优势。 一、集群session管理...