- 浏览: 154355 次
- 性别:
- 来自: 布尼塔尼亚
最新评论
-
aa87963014:
iTarget 写道弄清楚“事务”和“事物”打错字, 统一为事 ...
现在的数据库系统是否还需要事务? -
iTarget:
弄清楚“事务”和“事物”
现在的数据库系统是否还需要事务? -
aa87963014:
ipconfig1 写道 我现在也遇到这样的问题,当缓存的数据 ...
spring cache 拓展 -
aa87963014:
xcw931924821 写道楼主现在实现了吗?可以查看我的 ...
spring cache 拓展 -
xcw931924821:
楼主现在实现了吗?
spring cache 拓展
文章列表
freyja作为项目中取代hibernate的ORM框架很符合我的心意,原本来说hibernate对开发效率基本没什么提升,而hibernate的执行效率来说本身属于比较慢的一类。
这类框架都属于JDBC的一层封装,在性能方面,能体现出价值的地方就在于如何利用好缓存。针对项目本身不需要集群、分库。freyja从设计一开始就少了许多负担。
查询缓存作为ORM框架中的重要一环,在此我写一点我对查询缓存的理解和freyja里面对查询缓存的做法
一开始确实是对查询缓存这块异想天开了,仔细分析之后发现只处理得了单表的查询缓存。还不能去支持部分函数,支持的sql如:
sele ...
freyja 功能基本完毕
- 博客分类:
- freyja-jdbc
freyja 的功能基本完毕。后续只会改进这些功能的性能和bug。
不太会有事物支持、hql语法支持、也不会支持分布式。
bean 和src都再下面可以下载。test项目在
http://code.google.com/p/freyja-jdbc/
可以下载。再测试一段时间,第一个版本大概可以出来了。
FreyjaJdbcTemplate的开发前言
freyja 的简介
freyja发布了预览版:FreyjaJdbcTemplate预览版
有的属于工作量问题,思路有了等待完善。如查询缓存、维护缓存一致、提供更丰富的接口与支持、主键。
麻烦些的有延迟加载之类的。
没有思路的如:原生sql执行update/delete 如何维护缓存
到现在也无法想明白的如:事物
如果按照现在的做法唯一的问题是没办法满足事物隔离性。
如果严格实现事物就需要每次取得的实体都是独立的。需要每次都需要序列化、反序列化一次。是否有必要这样。
发生事物隔离性问题的情况仅仅是在对同一个对象修改同一个属性产生冲突。很棘手,我开始好奇那些不支持 ...
简介: FreyjaJdbcTemplate的开发前言
Freyja = JdbcTemplate + naming SQL + Cache;
Freyja是在spring的JdbcTemplate基础上的一层封装,核心是naming SQL部分。
@Entity
@Table(name = "t_user")
public class User {
@Id
@GeneratedValue
@Column(n ...
准备决定不再支持hql特性
- 博客分类:
- freyja-jdbc
又测试过一段时间发现save和hibernate的性能相当。select 一如既往的快hibernate一大截。
但是心里总是毛毛的感觉哪里有纰漏。
我一直把hql当做一种join的简化写法 而不是面向对象查询。
hql转成join 查询是可行的,但是。。。我觉得现在就把hql特性加进来不是很成熟。加进来显得不伦不类,没能带来性能提升而且成了一个大的隐患。
freyjaJdbcTemplate的目标就是追求效率。
save和update 操作实际上不会有太大差别,因为这类系统提升效率的地方就是依靠对缓存的掌握。
也就是说差距体现在select 操作上面。 ...
事情不能总是一帆风顺,挣扎了一阵子我宣布freyja缓存特性添加失败。
查询缓存本身就是一个很可笑的事情,缓存不是数据库。面对错中复杂的sql很难维护缓存,查询缓存还是需要根据业务来做,否则完全是浪费时间而且效 ...
Freyja核心:HQLParser + Cache
HQLParser处于完善阶段大概不会有太大变动。
Cache则有2大功能等待实现。这个是Freyja的最大难点之二。(第一个是HQLParser)
没有特点就没有存在的价值,Cache的2大功能才是重点中的重点。HQLParser只能算是玩具。
等这个完成之后我会放出Freyja的第一个版本。
HQLParser待会儿放出下载。觉得有帮助的可以看看,当然如果有更好的转换方式记得告诉我下。
这个算不上什么特性。每个用过spring jdbcTemplate的估计都会写一些封装类。
老实说在使用过程中,吃了点亏,浪费了一些时间。
1、RowMapper
2、update
RowMapper很好很强大,Freyja里面使用了3个实现类
BeanPropertyRowMapper - 用来处理类似于select * from User 的结果集
MapRowMapper - 用来处理类似于 select name,age from User 的结果集 Map<String,Object>结构返回
ObjectRowMapper - 同M ...
在使用hibernate开发过程中,让我一直感到奇怪的是为什么缓存是如此的让人不顺心。对于update操作频繁的项目更是噩梦。这和我对缓存的理解有很大的出入。
我的想法有2点:
1、数据库是大海,缓存是池塘。如果我抓了4条鱼到 ...
freyja2大特点:hql+cache
freyja可以无缝替换掉hibernate,才怪。
freyja主要功能是为了实现对jdbc操作的封装而不是替换hibernate,但是为了替换掉项目中的hibernate,freyja实现了简单的hql语法(而且也实现不了复杂的)
举个例子来看下freyja大概支持哪些hql/sql语法(理论上支持全sql映射)
select x.n,x.id,x.name,devscore,u.uid,cityId from User u left join ( select * from ( select i.userId as ...
一直以来只用过hibernate作为数据层,hibernate确实是很强大,如果有人说hibernate能减少90%代码量,这句话绝对不假。
但是,渐渐的发现了Hibernate的不足之处,也是因为这些hibernate的不足之处让我做出开发FreyjaJdbcTemplate的想法:
1、HQL
自家创造的HQL独立与sql语法,虽然有打点访问的这种类对面对象方式语法但是个人觉得没有这个必要,HQL应该可以与SQL融合,至少不排挤SQL
2、cache
如果想快就必须加入缓存,越接近底层越容易控制缓存也能越达到更好的缓存效果。hibernate虽然支持 ...
例如
class User{
private Integer[][] scoreArray=new Integer[3][2];
}
存入mysql blob字段里面去。
我尝试用jdbctemplate实现,但是始终无法成功。
读出来的blob字段转换成byte[]数组和InputStream
a=-1474836480;!!!!!!!!
无法理解,如果说int值溢出为什么不直接抛出异常?
有一个地方前端没限制输入,后台也没验证输入。
当输入如:100000000(一亿)之后服务器计算之后所有数值一切正常。因为200*100000000为一个负数!
也因为这样绕过了验证(服务端所有地方从来都没有考虑过负数的情况,也没有对有负数的地方验证)
由此:1-(-1474836480) 那么久变成了1474836480+1,照成了异常数值。
如何处理这种情况?真心觉得这种结果为负数的设计完全就是神经病,为什么不直接抛出异常
原帖内容已删除,对描述部分做新的修改,将不针对hibernate这一个orm框架:
我将会致力于从根本上解决脏数据读取问题。
对于我们现在的大多数框架来说,任何操作都是基于数据库的。相当于把sql语言转换形式进 ...
系统因为一些原因分成了2部分。其中部分表共用。开始加上分布式缓存之后问题开始来了。
1、因为其中一个系统不能支持lazy所以调整结构以提高性能,结果照成2边实体不一致,当然缓存会出问题,可以理解。
2、另外开启查询缓存之后发现通过createSQLQuery方式创建query开启查询缓存查也会有问题。(理解万岁)
3、2个系统启动前需要清空下缓存,会有一个同步的问题?还有其中一个关闭,一会儿再启动缓存也会有不一致的问题?具体的还没研究。
现在苦恼于要把2边的实体统一,当然不知道有没更好的办法解决。