- 浏览: 122600 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (145)
- java (145)
- Java网络编程 (1)
- SWT 文本框Text通过GC重绘改变边框颜色 (1)
- tomcat部署web工程的两种方法 (1)
- JAX-RS 从傻逼到牛叉 1:REST 基础知识 (1)
- FreyjaJdbcTemplate 大致上完工了,想请人重构。。 (1)
- 开始认识自己 (1)
- 设计模式-Abstract Factory 模式 (1)
- 数据库中主键的设计原则 (1)
- JNI中jstring类型与c语言中的字符串的转换 (1)
- mac环境变量 (1)
- STC单片机ADC转换的例子 (1)
- myeclipse 8下安装Ibator . (1)
- OSGI与Android结合 (1)
- CSDN BLOG EXPERT (1)
- Java中网络操作的开源库CommonsNet (1)
- Apache License Version 2.0 英文内容及中文翻译 (1)
- JTest (1)
- GeoCon 用C#编写的开源的地理信息数据转换工具 (1)
- ERP简易教程 (1)
- 提高站点在搜索引擎上的排名 (1)
- Wifi (1)
- 腾讯Q+开放平台,相信又是一次成功的模仿 (1)
- C#坦克大战网络版代码 (1)
- Problem16 (1)
- Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较) (1)
- ava框架数据库连接池比较(c3p0 (1)
- dbcp和proxool)bonecp (1)
- 继续向成熟男人靠拢 (1)
- Qt4.7中 默认的构造函数 (1)
- xml CDATA (1)
- 只针对中英文混合分词的中文分词器 (1)
- 典型相关分析及其适用范围和spss操作(转) (1)
- llvm (1)
- java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access (1)
最新评论
-
xm3530:
什么鬼?都没法看,发出来干嘛
Android中利用App实现消息推送机制的代码实例 -
lvtenglongxiaohei:
太经典了!
学习一下!
ERP简易教程 -
lvtenglongxiaohei:
<br> 一天中午,丈 ...
ERP简易教程 -
hzw2312:
加油~~~!!!
开始认识自己 -
123048591:
显示乱码
tomcat部署web工程的两种方法
FreyjaJdbcTemplate 大致上完工了,想请人重构。。
最后一个功能动态update完成,freyja还需要稳定性测试,并且检查疏漏的地方。
?
我对freyja的这套想法还是很满意的,cache就是几个map。不需要序列化。
执行update方法的时候维护缓存。
如何在当前方法里面知道是否开启了事物?如何知道几个方法是否在同一个事物里面?
我没有找到相关的API方法,但是根据同一个事物会共用一个连接来判断是否在同一个事物里面。
然后根据“事物缓存”来比较update了哪些字段。"List<String> updateColumn = MethodUtil.beanMapping(oldValue, value);"
?
由此就可以动态update,而不需要每次update的时候update整条记录。也许这样能提升update性能。
但是动态update由可以提高维护缓存的效率。因为如果一次update整个记录和update单个字段是不同的。
?
代码现在很乱,乱得我自己焦头烂额的。还希望有达人能帮忙重构一次。
?
----
整个程序是这样的,初始化的时候会扫描bean。把一些映射信息存到BeanInfoCache的map里面。
get(T)就是直接使用jdbctemplate的query
save(T)也是直接使用jdbctemplate的update
update(T) 就是用上面说的动态update 然后拼接sql,动态还是很有必要的,上面说明了。
?
executeUpdate(HQL)首先直接发送sql update数据库。然后处理缓存:
分为2类,一类是可以直接在内存中查找出来的。还有一类是没办法查出来的,这部分通过发送sql得到 ID然后得到结果集。
?
查出来了内存中需要更新的实体之后,通过
"private <T> void update(T t, BeanInfo<?> bi, Update update, Object[] args)"方法在内存中通过表达式、反射更新实体。
每个实体更新之后还需要更新查询缓存:
"private <T> void updateQueryCache(BeanInfo<?> bi, T t, boolean remove,List<String> columns)"
?
更新查询缓存的逻辑还算简单,上一篇应该大致上讲过了。只不过加了动态update,可以缩小更新范围。
?
?
?
放入查询缓存这块:"public List find(Integer first, Integer max, String hql, int type,Object... args)"
这个方法也是find主方法。
?
HQL分为支持查询缓存和不支持查询缓存2部分。判断支持的条件在解析HQL的时候已经知道了。
然后支持查询缓存的这部分还分为查询全部和查询部分。
区别在于查询部分在查询全部的基础上还需要处理一次:
"list = SqlParser.parser(list, sis, hm.bi, hm.rowMapperType)"
这样得到最终需要的查询结果。
QuertyResult
?
?
<span style="white-space: pre;"> </span>public List list;
<span style="white-space: pre;"> </span>public List result;
?
?
result才是实际的结果集。
list为该结果集涉及到的数据库记录。这个用于维护缓存的时候进行逻辑判断。
?
放入查询缓存这部分还需要改,但是还没想到更好的方法。
?
事物这块直接把spring的copy过来,在commit的地方加了释放“事物缓存”。
?
虽然到处都用到了反射,但是这个不觉得是问题。不知道还有哪些漏掉的东西。
?
本想看看hibernate是怎么实现动态update,但是在hibernate的源码里面迷失了。看到saveOrUpdate监听器这块就跟丢了<img src="/images/smiles/icon_redface.gif" alt="">
还希望有人能帮帮忙,谢谢!<img src="/images/smiles/icon_arrow.gif" alt="">
?
下面有测试用项目,里面包含需要的代码。lib包就在前面几篇有放出下载。
?
?
- freyjatest.zip (178.8 KB)
- 下载次数: 1
发表评论
-
java连接数据库Oracle|DB2|Sql Server|Sybase|Informix|MySQL||PostgreSQL|access
2012-02-08 14:17 1014<div>Java数据库连接(JDBC)由 ... -
llvm
2012-02-07 16:29 847llvm ... -
典型相关分析及其适用范围和spss操作(转)
2012-02-07 15:43 1514看文章《科学学研 ... -
只针对中英文混合分词的中文分词器
2012-02-03 10:39 975该版本说明 1、只针对中英文混合分词 需要一些中文和 ... -
xml CDATA
2012-02-03 08:45 1154<h2 style="font-si ... -
Qt4.7中 默认的构造函数
2012-02-01 09:14 1047<p><span style=&qu ... -
继续向成熟男人靠拢
2012-01-11 17:04 846转自徒儿的人人。 ... -
ava框架数据库连接池比较(c3p0,dbcp和proxool)bonecp
2012-01-11 14:13 1072<h1 style="text ... -
Ajax 应该变成 Ajaj (关于JSON 与 XML 的比较)
2011-12-28 15:23 907<span style="font- ... -
Problem16
2011-12-28 12:53 628package com.shui.mu.yao.io. ... -
C#坦克大战网络版代码
2011-12-20 13:09 929简单C#坦克大战网络版代码 写完单机版 http ... -
腾讯Q+开放平台,相信又是一次成功的模仿
2011-12-20 10:44 827今天看到两则新 ... -
Wifi
2011-12-19 13:14 1032. Confirm if Wifi is On ... -
提高站点在搜索引擎上的排名
2011-12-19 12:04 880对于拥有网站的各位站长来说,都希望自己的站点能够在各种 ... -
ERP简易教程
2011-12-16 16:47 874注明:下面的帖子 ... -
GeoCon 用C#编写的开源的地理信息数据转换工具
2011-12-14 12:29 924<p class="MsoNorma ... -
JTest
2011-12-14 09:00 997接到parasoft公司一位先生打来的电话,说下个月第 ... -
Apache License Version 2.0 英文内容及中文翻译
2011-12-13 12:59 2209</span> <p class= ... -
Java中网络操作的开源库CommonsNet
2011-12-13 12:39 772<p class="MsoNorma ... -
CSDN BLOG EXPERT
2011-12-13 08:59 1059<img src="http://p. ...
相关推荐
国际管道项目在完工之后,需要将竣工资料编卷成册交给业主,以便于业主方在后续的运营维护中使用。采办竣工资料是国际管道工程项目竣工资料的重要组成部分。 由于竣工资料的整理在国际项目采办中起着举足轻重的...
信息化系统集成项目项目竣工报告.docx
给排水工程竣工验收报告、完工报告.doc
为了优化以零件族为单位进行生产的可重构单元内单个零件族的加工时间和协调各零件族同时完工以实现整体调度所用时间最短,提出一种分级调度算法。该算法将调度过程分为三层,即时间决策层、分配决策层和路径决策层。...
1、竣工图在设计文件基础上编制,施工图没有变动的,由竣工图编制单位加盖竣工图章作为竣工图,凡有一般性图纸变更及符合杠改或划改要求变更的,可在原图上修改,并加盖竣工图章.doc
精品教育教学资料
信息化系统集成项目项目竣工报告(建文).docx
竣工审批(审批人姓名).xlsx
人民防空工程竣工验收指引.doc
工程竣工验收报告_工程竣工验收报告模板装饰装修建设施工完工监理评估验收记录报告.xls
竣工验收鉴定书_工程竣工验收报告模板装饰装修建设施工完工监理评估验收记录报告.xls
7竣工验收报告范本_工程竣工验收报告模板装饰装修建设施工完工监理评估验收记录报告.doc
8竣工验收报告模板_工程竣工验收报告模板装饰装修建设施工完工监理评估验收记录报告.docx
绿化工程竣工验收单_工程竣工验收报告模板装饰装修建设施工完工监理评估验收记录报告.xls
工程竣工验收申请表_工程竣工验收报告模板装饰装修建设施工完工监理评估验收记录报告.xls
人民防空工程竣工验收监理实施细则
综合布线工程竣工文档模板,包括工程竣工文档组成部分,各部分编写格式等.
工程项目竣工验收讲义.ppt
桩位偏移图是桩基础施工完成之后竣工资料中必须的资料,地方不同验收资料对桩位偏移图的要求不同,但是绘制该图的确有些繁琐,必须与《土方开挖后桩基础复核及桩质量检查表》数据对应,在桩数量很多的情况下,需要...