使用EJB你考虑好了吗?
什么时候该使用EJB
在众多优点和缺点面前,程序员似乎无从选择,基于这样的情况,我们该如何决定什么时候用EJB更合适呢?
如果你有一个基于servlet的web应用程序,这个应用程序要用到数据库。要用到JDBC,要用到SQL查询语句,然后得到ResultSet对象,这是一组表现业务逻辑对象的数据。你将会创建一个类,来表现数据库一条记录的结构。代码如下:
当你将结果集显示到表现层或者从表现层数据插入到数据库,你就会考虑如何将这些逻辑事务移到我的MyObject。如果将servlet和那些JDBC链接细节分离开来,让那些对象自己在数据库里查询自己,并且修改,删除。MyObjectobj = new MyObject();
obj.setXXX(rs.getString("XXX"));
obj.setYYY(rs.getString("YYY"));
此刻就会有一个新的问题:如何通过查询语句在数据库里找到一个对象?如果要通过主键来查找的话,那么要将主键传到类的构造器中。如果要通过多条件来查找一条记录,那么将需要更多的静态方法。你也需要一种方式来支持事务处理。
当应用程序的访问的人数增多,程序的压力越来越大,程序的稳定性也就越来越重要的时候,,就必需考虑复制(replication)、快速对象持久化(fast object persistence)、对象缓冲(object caching)、数据库连接池(database connection pools)、安全事务(secure transactions)等等。这些问题在EJB中都已经得到了解决。你不需要再去走一些弯路,犯些错误。。如果你的bean是一个容器管理持久(Container Managed Persistence)实体bean, 你所要做的就是实现一些接口,你不需要去考虑数据库的连接问题。如果这不是你所需要的,也没有关系,你可以自己去实现BMP(Bean Managed Persistence)实体bean.
在应用程序的事务层里,并不仅仅是保持数据的对象,还要实现一些动作功能的对象,这些对象表示业务逻辑。当你开始写应用程序的时候,所有的业务逻辑将会驻入到servlet里面。应用程序最终会需要几个servlets的支持,并且你将会选择是否粘贴复制业务逻辑代码,或者单独称为一个类。一些用户最终会在每个页面中与你的应用程序交互,所以就需要将他的session信息保存起来,以区别不同用户的请求信息。这个问题的解决方案称为会话Bean(Session Bean),它将封装在应用程序的所有业务逻辑里面。
0
相关文章
