entity bean 代表一条数据,如果是显示数据,不要用entity bean 用bean +session bean +ado , bean 封装数据集,ado连接数据操作;session 结合他们。你错误的理解了entity bean 。效率很低是因为你使用entity bean 的缘故
解决方案 »
- java 怎么判断日期格式跨度
- js中alert()与showMessage()区别
- 多条记录如何统计成一条
- 问一下使用什么软件可以创建pdf模板文件?(也是个pdf文件)
- 怎么才能让彩信显示是幻灯片而不是演示文稿
- hibernate新手问个简单问题。。。急。。。在线等
- 谢谢!!!!! java如何实现读取XML文件? 急急急~!~~!~~~!高手来!!!!
- 关于activemq发送文件的问题!在线等,急!
- 请各路高手介绍基本能对java学习有所提高的书~中英文都行~!
- j2ee启动问题!!!急,请高手赐教
- 使用 wsad 配置数据源的时候,在哪加用户信息呀?
- 关于petstore-1_3_1_02 DEMO版的一些问题!
可能你没理解我的意思,我说的是分页显示。如何分页?而不是用entity bean的问题。另外怎么搞出ado来啦?我们在Unix下开发东西,没有ado。
不过很对不起,我没有做过,也只是脑子里有个印象。你可以在数据库版问问
大家有好的解决方法吗
还是显示?是不是你显示每一页的时候都要finder一把?
在显示的时候只是从session中读取未显示的,因该很快的,但是这样很可能
在显示过程中数据不是最新的。而且第一次显示的时间比较长
可以考虑:
每一次只是查询你要显示的数据,在session 中保存已经显示了的数据的key,查询的时候查询还没有显示的key的数据,而且只是查询前规定的那么多条记录
你说的确实是一个方法,但是显示的数据不是最新的。同时如果用有状态的session bean会增加服务器的负担的,我想这个问题在数据很大时很严重。
finder函数只能返回Enumeration类型的值(EJB1.2),而Enumeration只能单向的向前一条一条记录的向前移动,如果数据很大,我要显示最后一页,就需要从第一页(也就是第一条记录)开始移动,这个速度应该很慢啊。
用stateful sb恐怕问题会很大。我也遇到了同样的问题,有人能提点一下吗?我觉得楼上的几位都没有理解问题本身。
如用sql可以的话,那么应该可以达到我的要求,但是请问一下如何使用rownum呢。抱歉我的sql不太熟悉。
可能要视具体情况做取舍
select top n @x=id from a wher id >@x
向后
select top n @x=id from a where id<@x在程序中记录 主建的大小来 用
相信用session bean的解决方法你是知道得啦!:)
设计系统不能仅仅局限于貌似完整的结构,更重要的是考虑扩展性和性能!扩展性并不仅仅有结构就可以了,对于性能来说大量的对象的创建是需要尽量避免的!
你可以专门写一个session bean以实现数据检索的功能。另一session bean条用entity bean以及数据检索的session bean。具体实现数据检索的分页思路见下:我们一般创建statement是这样写的:
stmt = con.createStatement();该方法在JDBC 1.0 中唯一可用的方法。在 JDBC 2.0 中,存在着允许创建可滚动的 ResultSet 新方法:
createStatement(
int resultSetType,
ResultSet.CONCUR_READ_ONLY)其中resultSetType 可以是以下三种:
1.ResultSet.TYPE_FORWARD_ONLY--这是默认值,和 JDBC 1.0 中的一样:仅转 交移动,列一般地仅能读取一次。在 ResultSet.next() 返回 false 时, ResultSet 数据就不再有效并自动关 闭。2.ResultSet.TYPE_SCROLL_INSENSITIVE 允许创建 ResultSet, 其中的光标可以向后、向前和随机移动。这是静态数据:数据库中对当前 ResultSet 中选定的行进行的任何更改都是不可见的。也就是说, ResultSet 对数据修改不敏感。3.ResultSet.TYPE_SCROLL_SENSITIVE 允许创建 ResultSet,其 中的光标可以向后、向前和随机移动。这提供了数据的动态视图:数据库中对当 前 ResultSet 中选定的行进行的任何更改都是可见的。也就是说, ResultSet 对数据修改很敏感。若我们采用后面两种,那么就可以实现数据分批返回了。这样就可以实现分页功能了。
那个是Data Access Object DAO,你别误导人家了
1.JSP 中Taglib
写两个TagLib:PageToPage.java负责生成翻页的JSP代码(如第一页,前一页,后一页,最后页操作的jsp代码);
PageDataControl.java负责拿数据放入request或session中;
2.JSP只是负责从request或session中取数据;
3.DAO(Date Access Object)
负责从数据库中取数据,如果是Oracle,可以用(rownum between 1,10);如果数据库不支持,可以考虑用JAVA程序如拿(最好使用
前测试一下在数据库有上百万数据时,翻到最后几页的效率)
//Page 是页面传过来的要去到的页数,count是一页多少条记录
Collectin resultList = new ArrayList();
if (Page >= 0 && rs.absolute(Page*count+1))
{
do
{
ValueObject valueObject= new ValueObject();
valueObject.setXXX(rs.getString(1));
....
resultList.add(valueObject);
}
while ((rs.next()) && (--count > 0));
}
else
{
System.out.println("No records");
}
SessionBean对外接口用VO, 对内操作用Entity. 这样外面的调用者也不用care数据是Remote还是Local.