> 论述得不错。不过似乎没有针对到我的问题,我的意思是:
> 一个数据结构,比如在C或者C++中就定义成一个struct或者是
> lass。
> 但是在J2EE下却也被定义成一个EJB(并没有其他一些应用级?
> 需求,如线程,事务等等)。我就是对这种做法感到不太合适
> ?
其实不然,任何数据类型都有一些应用级的需求,问题是在什么时候而已。
一个数据类型的对象,本身,不能,也不应该包含任何线程或事务的编码,这些东西应该由调用这些对象的应用去思考处理。
数据结构举个例子个人资料
public class Person implemnets Serializable{
private final String name;
private final String gender;
public String getName(){}
public void setName(String newName){}
public String getGender(){}
public void setGender(String newGender){}
public Person(){
}
//其它具体实现略
}
好了,这个Class我们在应用中使用时一般会做为一个数据对象进行操作甚至传送
操作例:
Person me = new Person();
me.setName('XXXX');
String yourname = me.getName();
me = null;
传送
ObjectInputStream in = new ObjectInputStream(request.getInputStream);
Person me = (Person)in.readObject();
ObjectOutputStream out = new ObjectOnputStream(request.getOnputStream);
out.writeObject(me);
注:这些例子都过分地简化了,可能看不出些什么问题。
此外,还有写入数据库等等。在这个例子里,这个抽象的数据类型除了定义以外,还必须由开发者考虑好所有的处理步骤并使用其它类对加以实现。还有一些例子比如,同一个数据结构,如果同时有20人以上去更新完全不同的数据实体,那么你就必须编写相应的处理对象,以便保持这20个实体的数据完整性。而不能写好了这个数据结构就算完事。JAVA、C、C++都是这个道理。
如果EJB的话,EB还是SB,无论是BMP还是CMP,对于开发者,关心的只是这个数据结构本身,是否定义正确,是否逻辑正确等等,关于数据完整性、并行处理这些东西。则交由容器编写者去思考。
如果,您的问题是为什么要按EJB那种格式去编写数据结构?是的,您会觉得这样很别扭,明明很简单的一个数据结构却要写3-5个类(这要看你是写SB、EB、CMP、BMP还有remote还是local而定了)。可是,您一旦写完这些类以后,很多数据交换、提交的处理就不用您去搞了。
那么,我的问题就是,您的应用中,您已经写(处理)好,您的简单数据类型的处理操作了吗?您已经把远程数据传输,调用,数据并发处理,类型内存增减、数据检验、单项多项数据提交回滚的东西都写好了?最重要的是,这些东西可以在多个应用中复用吗?如果以上答案皆是的话,那么,当然是使用简单数据类型去定义数据结构好啦。
希望,这些能回答您的疑问。