JdonFramework 5.1发布

JdonFramework 5.1主要变化是增加了Hibernate3支持,并且将原来一个jdonFramework.jar包分为三个包:jdonFramework.jar jdon-struts1x.jar和jdon-hibernst3x.jar
如果使用struts+jdon+Hibernate架构,这三个包需要完全使用。
如果只使用Jdon框架作为业务层框架,只需要jdonFramework.jar ,可以使用Jdon框架的IOC管理功能,不过Jdon框架提供的CRUD流程简化将无法实现。

JdonFramework 5.1重点是增加Hibernate3整合,特别是Hibernate3的懒加载支持,通过在web.xml配置CloseSessionInViewFilter,可以实现一个请求结束后再进行Session关闭,这样,Hibernate缺省的Lazy=true功能就可以正常使用。

懒加载功能可以大幅度提高Hibernate关联性能(前提是基于DDD分析设计),是Hibernate必须使用的功能,但是单纯使用Hibernate却无法激活懒加载,致使很多人关闭懒加载lazy="false"。

Spring也提供了Hibernate的OpenSessionInView功能,但是它是将Hibernate的Session再表现层打开和关闭,而JdonFramework 5.1只是检查是否打开的Session,如果有则关闭,这样缩短Session无谓开启时间,降低出错率,同时简化事务(Spring+Hibernate架构Spring事务缺省是read-only只读,只有配置显式create方法事务为非read-only后,才能使用Hibernate保存创建新资料,非常不方便);

Struts+Jdon+Hibernate(简称SJH)和Struts+Spring+Hibernate(简称SSH)最大的特点是:
1.SJH对Hibernate无侵略性,Hibernate全局配置还是在自己的hibernate.cfg.xml中配置,而不似SSH需要在Spring中配置。这样从设计上减少彼此依赖性,实现真正分层松耦合。jdon-hibernate3x.jar可以单独使用。
2.SJH以更少的代码快速实现增删改查和批量分页查询。
3.Jdon框架内置缓存+Hibernate二级缓存+懒加载最大化提高缓存使用效率,性能优异,有效实现数据库零访问和必要访问。

JdonFramework 5.1推出同时,也推出struts+jdon+Hibernate3的整合应用案例
http://www.jdon.com/jdonframework/download/samples_hibernate.zip
hibernate案例中是不用事先建立数据表的,而是在部署时自动建立,这也体现了OO系统的纯正性,将数据库打入软件的运行部署管理阶段,和系统管理在一起。
该案例领域模型图:


更多案例::http://www.jdon.com/jdonframework/app.htm
[该贴被banq于2007年09月16日 09:25修改过]
[该贴被banq于2007年09月20日 17:33修改过]

Mark下,呵呵,支持Jdon
[该贴被davma于2007年09月15日 10:59修改过]

支持banq,有机会的话学习一下.

前几天刚在一个帖子中说要对jf进行分离,现在就看到了成品了,感谢板桥的作品,正在学习中。。。
------
再请教banq一个问题,现在的ibatis2.3中已经去除了dao,它推荐使用spring的dao实现,那么如果我用jf的话,jf自带了dao了么?
(因为正在学习其他的东西,对ibatis实现的那个例子还没看,不知道您的那个实现是用的ibatis自带的dao还是jf自带的dao)
[该贴被demoz于2007年09月18日 00:17修改过]

>现在的ibatis2.3中已经去除了dao,它推荐使用spring的dao实现
唉,本来我们使用框架的目的就是降低依赖,但是失去制衡的Spring已经形成垄断(这和当初它批判的EJB又有何区别呢?),其他框架反而依赖它,要时刻记住,java世界是一个组件世界,每个组件原本都是独立的,这是本质。

Jdon框架坚持尊重每个框架自己的独立性,Jdon框架本身也是可彻底拆分的,最后直至拆为无。

关于iBatis可以参考jdon框架的jPetstore。

关于DAO,我已经在另外一个帖子说了:DAO将被Repository替代,DAO本身概念就是数据概念,而不是对象概念,在程序架构中完全消灭数据概念是迟早的事情:

DAO和Repository有什么区别:
http://www.jdon.com/jivejdon/thread/32562.html

支持下banq~

关于缓存方面性能方面的拓展,除了使用分布式缓存JBoss Cache以外,还有开源Terracotta,当Hibernate使用EHCache作为二级缓存,Terracotta会集群EHCache到多台服务器上。

Terracotta可以在Hibernate Session关闭情况下,在多台服务器内存中保存POJO,也就是Domain Model。

在Jdon+Hibernate架构中,Jdon缓存已经实现在Hibernate控制外部保存POJO(也就是Session关闭情况下),Jdon框架也可以使用EHCache替代原来缓存,从而借助Terracotta实现集群分布式缓存,提高计算性能。

http://www.terracotta.org/confluence/display/orgsite/Hibernate
[该贴被banq于2007年09月18日 16:22修改过]

我也很想支持 。可是不对jdk5以下版本兼容,将注定英雄仗剑独走天涯。我看了jdonframework的源代码,尝试改造的,但是发现工作量不小,似乎要重做。难道是java本身束缚了J道?

对了,我现在的系统装的java版本是1.4的,那是不是意味着没办法用jf5.1了,jf现在必须要5以上么?如果这样,那我就去重装java了
还有请教下,是不是jf5.1现在无法和最新的无dao的ibatis2.3集成?或者这样问:jf5.1+ibatis2.3可以很好的集成吗?
另外:究竟ibatis集成了dao的和未集成dao的有什么区别,如果没有集成dao也可以用,那么原来集成dao究竟有什么意义?现在将dao交给spring来管理与自己管理有那些区别?
[该贴被demoz于2007年09月18日 23:39修改过]

>究竟ibatis集成了dao的和未集成dao的有什么区别,如果没有集成dao也可以用,>>那么原来集成dao究竟有什么意义
我已经说了,DAO是一个很虚的概念,持久层框架本身就是DAO,作为数据库操作iBatis如果没有DAO实在功能,能是持久层框架?

至于IBatis宣传那么烟雾弹你怎么会给绕进去呢(那些都是技术之外的政治意图,向Spring示好,表示自己是融入主流等等)?所以,学习技术之前,学习本质和思想很重要,关于DAO如果还想讨论请另外开帖,不在此讨论。

谢谢banq指导,经过google、baidu和您的点拨,对dao有了初步认识,谢谢

banq大哥,我一直在关注这个网站,我今天才注册,一直默默的学习着,学到了不少东西,我工作才一年,无论是理论还是实践都不成熟,目前还是不断学习中,希望以后各位大虾多多指教。

Hibernate为什么不支持J2SDK1.4?
J2SDK1.4可以使用Hibernate吗?
JdonFramework5.1为什么不能用CRUD简化流程,不能兼容吗?

hibernateTemplate 如何使用才能查询有参数的sql 语句

Hibernate低版本支持1.4, Hibernate是一个围绕对象为核心的框架,因此,不推荐使用Hibernate查询有参数的sql 语句,在Hibernate使用中,没有SQL的影子,只有对象,这是一种全新的方式,对于熟悉SQL的程序是一个打击和革命,因此Hibernate需要重新好好学习。当然这是另外话题,不要在这个帖子讨论Hibernate力偶。

现在有不少搞PHP的人对Ruby on Rails中的Active record(也是一种O/R mapping框架)大惊小怪,实际上,Java世界N多年前o/R mapping框架就出来,EJB2的实体Bean CMP已经具备o/R 雏形。很多语言总是跟着Java出现类似思想的产品,这已经是一个不争的事实。

有好事者可以将上面struts+jdon+jpa/hibernate这个案例和RoR同样的四个关联业务模型下代码开发量比较一下(包括CRUD和自动分页功能),我敢说,没有什么区别,同样少而快速,但SJH的Java架构相比ROR优点是:
1. 无论PHP或ROR,说到底还是脱离不了数据库这个母脐,依赖数据库;而JavaEE本身作为一个厚实的中间件,已经摆脱了数据库依赖,Java通过JTA和Cache将数据库降为操作系统级别的技术,JavaEE通过缓存或分布式缓存获取几十倍的性能,而ROR至今还在为正常的性能指标而苦恼。

2.Java这个架构是完全分层的,拥有无比健壮的鲁壮性,通过反射拥有动态语言的特性,又具备静态语言的优点;而ROR这样动态语言,如果在项目管理中不狠抓单元测试,那么代码拿到客户现场就无法运行的可能性很大,但是,Java中单元测试属于锦上添花,试想:将软件生命寄托于项目管理,这不是又回到10年前的环境?

3.拥有最好的可伸缩性:可以无缝过渡到EJB等分布式事务集群环境。组成一个大型系统。无需修改软件代码。JavaEE通过分布式事务和集群实现7x24小时不间断运行,就是数据库当机都不会对系统产生影响,因为大部分数据都被load到几百台中间服务器内存中了。
数据库时代的终结:
http://www.jdon.com/artichect/dbover.htm


[该贴被banq于2007年10月02日 10:23修改过]
[该贴被banq于2007年10月02日 10:23修改过]