packy
2002-08-24 00:42

> 我看了关于用实体BEAN进行多表查讯修改的帖,好象其明确的?> 案是不能.

> 另外,到底是写SQL语句难还是搞这么多复杂的概念难?那个维?> 更简单?我觉得CTLC CTLV

> 挺好,现在改点东西到处乱找,真是烦!

> 各位说说,SQL真的那么难吗?为了不写SQL值得付出这么多吗?

浆糊
2002-08-24 12:40

我认为业务逻辑就是你要完成的某个业务功能而要进行的多个步骤。例如完成一个用户注册:

public void create(User u) throws Exception{

if(exist(u)){

throws new Exception("This user has exists");

}else{

insert(u);

}

}

这是一个简单的业务,就是创建一个用户,但是它并不是面向SQL语句,而是面向接口,你关心的不应该是insert如何实现,而是关心如何更好的完成这个业务过程的完成。例如是否要在注册的同时给用户发个email.

zingers
2002-08-24 16:27

业务逻辑是逻辑,

是关于做什么,谁去做,怎么做,做了之后有什么相关变化的

理性层面。

SQL是一种实现数据库操作的面向语言的接口。

可以说用sql实现业务逻辑

是implements而不是"is a" relationship.

why10k
2002-08-24 16:58

呵呵,各位说的好.其实我是不相信CMP能写出有效的数据库应用来,因为各种数据库产品是不一样的,CMP应该是个通用的东西,难免产生效率问题,我更倾向于自己写SQL,由自己来控制.我心目中的程序结构应该是这样的,把该让数据库做的事都让数据库做,在BEAN层只能看到三种东西,TABLE,VIEW,STORED PROCEDURE,他们都对应一种数据模型,都可以想象成一张表,这样你的应用逻辑基本上就是SELECT,INSERT,UPDATE,如果是WEB应用就采用STRUCTS结构,直接调用JDBC好了,当然在程序里要有一个包装,如果是桌面应用程序,中间可以采用BEAN来调用JDBC,你要移植到不同的数据库吗,好,你可以针对那个数据库写出最有效率的代码,替换对应的TABLE,VIEW,STORED PROCEDURE,中间那层JDBC调用基本不变,如果有什么变化我们也可以做个工厂模式来适应,我一般倾向于直接调用,这些模式都要经过好多个间接,效率都要打折扣.这可能和我一直做C程序有关系.可是偏偏这个JAVA可以拿到更多的银子,不喜欢也得做.:-(

banq
2002-08-24 22:24

为什么Java能拿很多银子?它有其价值所在,我们不能用传统程序的逻辑思维来对待它,我不喜欢C++,就是因为它不是纯正的面向对象语言,这个“纯正”概念不是感情因素,而是有其理性一面:完全面向对象语言会导致你的思维习惯完全不一样。

具体的说,就以why10k 兄弟的思维来说,why10k 兄弟一直以效率为最主要,这是因为我们以前硬件资源太差的原因,效率在今天以及以后也要将,但是在和系统的可重用性 已经可拓展性相比,后两这显然更重要,因为硬件的发展总会弥补效率的问题,从Java的发展轨迹我们也明白这个思维习惯,在Java中效率已经不是第一,否则Java本身都没有诞生的必要。

CMP是EJB发展的主要趋势,从EJB 2.0的最大变化就是CMP功能增强这点已经看出来,这是趋势了,所以,不管谁的EJB容器软件,都必须遵守EJB 2.0的规范,数据库带来的差别越来越小。

从开发效率上说,CMP要快得多,why10k 兄弟采用的BMP方式,虽然在系统稳定后效率有提高,但是,我们知道,系统开发中花费的时间更多的是与用户初期交互上,因此数据库结构经常会变化,在这个情况下,使用CMP可以非常快改变,而用BMP则会心疼,“我好容易写的精致的SQL代码报废了,要修改了,还要重新测试”。

这也是本贴原始作者的困惑所在。

CMP能帮助你解决这些问题,至于系统稳定后的效率问题,你可以在CMP基础上再写出BMP来,这就是CMP_to_BMP模式,本站有问题介绍。