如果我删除实体bean(finder方法)并引入DAO层,是否会有性能提升。我想这样做主要是为了从DB读取数据。我的项目中有一个进程,在流程中有大约15个实体bean查找器调用,所以如果我删除实体bean或引入DAO并保留实体bean,那么性能会有显着提高吗?我正在使用EJB 2.1。
答案 0 :(得分:1)
使用Entity Bean查找程序检索数据会加载实体的所有属性,即使您可能只需要其中一个属性来处理任务。因此,实际上,EJB finders方法有开销,在检索大型数据集时尤其如此(甚至在调用其中的15个时甚至没有提到)。
因此,要检索大型只读数据集,使用JDBC API直接从会话Bean(我猜你有一个会话Bean外观)与数据库交谈可能更可取。 。如果我记得很清楚,这种模式被称为Fast Lane Reader。
请记住,此模式的实现会牺牲性能的数据一致性,因为在原始JDBC级别执行的查询不会“看到”对Enterprise Bean所代表的业务信息所做的挂起更改。