各位高手,请给小弟指点!!MVC模式中的JavaBean设计问题???? 郁闷好几天了!!!
每一条订单都与一个用户关联
在设计数据库时,我们都是这样设计的:
建一个订单表,建一个用户表
订单表里有一个字段userID,引用用户表(外键)
那么请问把二者转成JavaBean时,如何设计好?
方案一:
Order中设一个成员userID(int型),代表用户编号,
当需要得到用户的名字时,先order.getUserID() 再用这个ID
另外再调用另外的方法(需要再次连接数据库),再取得名字
方案二:
Order中设一个成员User(User Bean型),要取得用户的姓名时,直接
order.getUser().getName()
请问哪种方案好?
------解决方案--------------------JAVABEAN设计原则是在物理上去掉所有数据表之间的关系,具体关系在代码中体现
------解决方案--------------------订单是一个javaBean 用户表是一个javaBean
他们都是独立的一个对象而已,关键看你如何实现业务逻辑,你的sql查询语句怎么实现
javaBean只是负责存储相关信息,是一个独立的对象!java(面向对象)
------解决方案--------------------定单表
class number{
private Student userID;--主外键关系
private String .....;
....
}
------解决方案--------------------我觉得是第二种好,更面向对象
如果是第一种
我想你的意思是在order中写一个类似于:getUserName(int userID)这样的方法,
那么order这个类就要去"管"怎么取到user的属性
而这不应该由order来负责的
第二种,就是user的属性由user的方法来取
order.getUser(),返回的就是一个User对象A,我就可以按照使用User对象一样来使用A
要取User的name就A.getName(),至于怎么取,order不用管,只需要调user类的getName()方法.
区别就在于,第一种如果getUserName的实现方式变了,
那么就要到所有用到user的类中(order了,company了)去修改getUserName(int userID)方法.
(当然你可以把这个方法写到一个publicFunction类中,但是这样还是不够面向对象,"职责"也不够清楚)
第二种,使用user的类们,不用管user的name啊,id啊,sex啊什么的属性是怎么get到的
这些类们只管取到user对象的引用然后调用get方法就可以了
--------------
就像你老板让你办事
给我拿报表来,给我拿数据来
老板只管叫:拿来
你只要给
老板不管你怎么弄出来的
总不可能老板要你拿来
你告诉老板
先mysql -h -uXXX -pXXX
然后 use database
然后 selct XXXX
然后在很温馨的告诉老板:"
如果觉得每次都写很麻烦
你可以写在一个文件中
每次要看运行一下就可以了" ^_^
老板不开了你
------解决方案--------------------学习
------解决方案--------------------可惜PetShop4.0刚好就是用了第一种