EJB采用多层结构,使用adapter模式和bridge模式将商业逻辑计算和数据库截然分开。
EJB中将对数据库进行调用(如发出select等语句)称为会话bean(Sessionbean),而将对应数据库一个个记录的bean称为实体bean(Entity bean);由这两种类型的bean完成对数据库的访问.会话bean一般和客户端应用是一一对应,而和数据库端联系紧密的是实体bean,EJB在实体bean(或直接在会话bean)和数据库之间使用了Adapter模式和Bridge模式,无意在实体bean和数据库之间又多了一层,称之为DAO(Data Access Object ),DAO实际就是设计模式的混合体.
Facade模式:它的定义是为子系统中的一组接口提供一个一致的界面,很显然我们需要为(用户端至EJB之间增加一层,来松散两端点之间的耦合)这些bean提供一个统一的对外界面。
Facade模式参与者:
SessionFacade (ShoppingClientFacadeLocalEJB)
提供一组操作流程
将真正工作委托到EJB的bean.
EJB的bean (CustomerEJB, ShoppingCartEJB等等)
执行基本的商业逻辑操作
没有任何对SessionFacade的调用.
这样不但可扩展性大大增强,效率也提高了,用户端只需要一次Remote对SessionFacade调用就可以了,而SessionFacade会自动定位到与它同一台服务器的那些邻居bean(CustomerEJB, ShoppingCartEJB等等),无疑减少网络拥挤,提高了速度.
与性能有关的两个设计模式:proxy模式,flyweight模式。
proxy:EJB的bean属于巨大对象(反复的数据库操作,很费时间),该模式可以为在访问巨大的需要花费一定时间才能展开的对象时,提供一个代理。
flyweight模式:避免大量拥有相同内容的小类的开销(耗费内存),使大家共享一个类(元类),当要从EJB获取一系统字符串,而这些字符串肯定有许多是重复的,可将这些重复的字符串储存在Flyweight池(pool)中以达到共享。
摘自:板桥里人 http://www.jdon.com