本人刚刚在研究框架,前一阵玩游戏,荒废了,哎
说实话我也不是很想用EJB的,不过CMP是很方便,各取所需吧,反正我还没学到那。
不过现在还没做完,所以只能空谈谈了。
我是从后面开始做的,平台就定位在jb8+oracle9i+weblogic上,因为这好象是大多数企业用的,虽然JBOSS非常好,不过好象不花钱的东西企业也不用,呵呵,不知大家有没有体会。
先做了个单态的连接池,我的想法每次都去容器里取性能上应该会有影响吧。然后就是做DAO,我真的是把CRUD都做这里了,以后试着按BANQ的改改。这里我参照的是J2EE CORE PATTERN做的抽象工厂,感觉如果数据库变化不大,用工厂就可以了。
然后做前面的BO,在这里我遇到了很多问题。
1。事务是不是应该在这层调用,因为我没有用EJB,所以应该自己写事务吧?
带着这个思想我尝试自己写事务类,原来我也打算从UserTransaction实现。可我发现他里面很多的东西,我不一定能用到的,用不到那么麻烦,所以自己写了个事务类,我也用的单态串行化,因为可能会出现所说的事务A里有事务B。
2。我前面是不是应该有个facade呢,我用的是struts,那action本身不就是么?
看了些资料,并在和别人讨论一番后,否定了这个想法,Action只是前端控制器,后面一定要有facade,但不是BO,因为BO就是处理后台事务的。试想将容器放到另一台机器上,那client和server通信是一个类似线程的过程,所以应该是前后都有控制器的,这个控制器就是delegate,可参看J2EE CORE PATTERN的业务代理。它是一个后面的总控程序,我想前面有几个Action这里就应该有几个总控,但你不要认为CRUD是四个ACTION,这里可以按照struts里的module思想做。
3。测试如何做?
我发现在JB里会出现我改第5步,导致第2步都出错的情况,这才想到进行测试,JUNIT首选。不过这简单的东西至今还很头疼,呵呵,现在在看源码和这期程序员,如果谁不懂也建议这样看,;)还有banq的文章呢
对了,该说事务放到哪了。
无论是DAO还是JDO(不太懂)或EJB,都应该是在最后实现是才获得真正的连接,但事务的开始是在前面获得连接,然后一直把事务和连接传递到后面的。--不知这大家都怎么理解的
所以事务类写到delegate里,而连接是在事务开始前就获得的,所以放到事务构造器中是可行的。开始后进行一定的操作,此操作通过定位器(这也可以就是JNDI吧,我还没太通,我刚到delegate,不过想自己做个JNDI树)查找BO中相应方法,这个方法类似remote interface。最后连接到DAO进行真正的操作。
我做这个有俩个意图:
1。想把扔了这么久的东西捡一下,在深化的同时也不断了解最近都有什么新东西值得学习。
2。不一定每个公司或每个项目都要用到EJB的,即使它非常简单。所以做出象板桥一样的框架程序,应用struts带和不带EJB的俩个框架。
最近学习的心得就是,模式无处不在,只不过你不认识它。还有就是,对接口编程,这总算有深刻体会,虽然它说的不能在明白了。
我这里的接口也包括抽象类,可别问我啥时候用抽象类啥时候用接口啊,我也不懂,不过感觉该用什么就用什么 ;) 废话