WEB 开发 开发语言 Java 技术 .Net 技术 数 据 库 硬件使用
图象媒体 Linux/Unix 移动平台 嵌入开发 Windows 专区 软件工程
Ajax 技术 | ASP | PHP | ASP.NET | C# | JSP | Access | Oracle | 网页设计 | Flash | 安全专题 | IIS | VC/MFC | Delphi | C/C++
 你的位置:首页 > Java 技术 > J2SE / 基础类

请问你用哪种方法
[ 来源:ITWENKU 时间:2006-9-12 14:53:42 | 浏览:190人次 ]

比如:论坛的帖子类 Topic, 会关联一个用户类 User
public Class Topic //论坛帖子类
{
private User postuser;
.......................
}
在数据访问层里 TopicDAO 一个方法: GetTopicListByFroum(int forum)

我觉的有两种方法从数据库获得 Topic 关联的 postuser 对象

方法一:
如果调用 UserDAO 获取相应的 postuser对象的话 GetTopicList(int forumId)
ResultSet rs = stmt.executeQuery("SELECT * FROM Topic where forum=forumId");
while(rs.next)
{
Topic topic=New Topic();
topic.setId(rs.getInt("id"))
topic.setTitle(rs.getString("title"));
int userid=rs.getInt("userId")
topic.setPostUser(UserDAO.getUserById(userid)); //
.............................
}

方法二 :
ResultSet rs = stmt.executeQuery("Select * from topic join user on topic.postuser=user.id where topic.id=id ");
while(rs.next)
{
Topic topic=New Topic();
topic.setId(rs.getInt("id"))
topic.setTitle(rs.getString("title"));
User postuser=New User() //--查询关联着User表----
postuser.setId(rs.getInt("userid"))
postuser.setName(rs.getString("name"))
topic.setPostUser(postuser);
.............................
}


请问你用哪种方法 还是有比这更好的方法


我用第一种!


up one


第一种



方法一要好点...


第一种,第二种会给垃圾回收造成很大的压力


肯定第二个呀
本来就应该用表关系呀,关系型数据库嘛
sql语句执行的会比较快呀!


第一种....


第二种


第一种


『接分』


第二种
好得设计是压力交给database,而不是交给application,



第一种


第一种维护起来简单.很好的重用. 但是如果返回10个topic的话就的在查User表10次 用11次


第二种维护起来就很麻烦了.但就查询数据库1次


第一种


我用第一种


第二种,第一种循环起来,很多笔数据,速度会慢些吧


第二种无论是效率还是可读性都非常好.


第一种好


第二种,效率更高


方法二 明显优于方法一


不清楚,帮顶下



第二种,第一种读取数据次数太多,效率低于第二种


肯定第二个呀


2


第二种
好得设计是压力交给database,而不是交给application,



方法二 :
ResultSet rs = stmt.executeQuery("Select * from topic join user on topic.postuser=user.id where topic.id=id ");
while(rs.next)
{
Topic topic=New Topic();
topic.setId(rs.getInt("id"))
topic.setTitle(rs.getString("title"));
User postuser=New User() //--查询关联着User表----
postuser.setId(rs.getInt("userid"))
postuser.setName(rs.getString("name"))
topic.setPostUser(postuser);
.............................
}



第二种


简单确凿的方法就是模拟一个大量的数据库,实际运行一下这两条语句,效果立即就出来了.


同意楼上


第一种


第二种
make up some users and messages and then test


第一种


first


第一种好一些


第一种


从效率上说,当然是方法二,但是从架构上说,首选方法一。理由是方法二不符合开闭原则。开闭原则是设计的基本原则,其表述是:程序设计应该为修改而关闭,为扩展而开放。对于类的设计,更要遵守开闭原则。方法一将User对象的setter/getter方法的调用交给了UserDAO,是很好的设计;反观方法二,一旦User类需要扩展一个除了UserID和UserName外的第三个属性(不妨称为NewField),那么方法二的代码就必须更改如下:
User postuser=New User() ;
postuser.setId(rs.getInt("userid"));
postuser.setName(rs.getString("name"));
postuser.setNewField(rs.getString("newField"));//加入该行,且要修改前面的SQL语句,不符合开闭原则



both two


JFJF


第二种


第一种!!!!
用的比较多。


第一种


我喜欢一


1
no join


jf


两种都不用。


我支持第二种,因为效率会得到改善


第二种,第一种要两次连接数据库阿,很烦


第一种,如果在大型应用开发过程中,还是这样的好一些... 而join的语法和两次普通的查询比较 我更倾向于两次查询 因为双表关联查询在某些数据库上并不会获得很好的性能还会给数据库服务器造成很大的压力.


第1种


第二种!


第二种!


第一种


1


我用第一种!


1


我想我不是很清楚具体的原因,希望各位 能说得在具体一些,我想知道你们选择的理由



第一种咯!


第二种。第一种在读取ResultSet的循环当中还要多次进行另外的查询,让人十分不爽,效率要低很多,稳定性也较差。


DFDFGDFGSDFGDSF

 相关文章
·现在测试工作怎么样?去培训合算吗?
·问个低级又简单的问题?
·类型转换问题
·如何对文本文件内容进行定位(随机存取)
·jtable 中哪个方法使表格不能被编辑,哪个方法使一次只能选择一行
·一道面试题,有人会吗?

 最新更新
在java中有哪个方法可以解决下面的问题啊:如取得一个雇员编号,当雇员编号<10需要在前面补0
关于static变量的用法
请问如何设置eclipse是其使用sun的Java编译器,而不是它自己的,谢谢
todo的使用?
读取大图片总是不行高手执教
有个关于JAVA向上转型的问题
如何改变键盘的输入值
FileReader与FileWriter读写"*。txt"的问题
如何将一个txt文件,读取到一个String数组里面
跟抽象类有关的问题
客户端连接服务器的时候,能绑定自己的端口号吗?
请问从socket取得的InputStream的readLine()方法是不是自动阻塞的?
 版权所有:中国IT问库
copyright © 2006 www.itwenku.com all rights reserved.