业务对象和数据传输对象的关系和区别?

来源:百度知道 编辑:UC知道 时间:2024/05/07 13:01:23
业务对象(Business Object,BO) 和 hibernate的数据传输对象DTO有些什么联系和区别??对表的操作为什么有了DTO还要有业务对象BO??小弟初学不太懂 还请高手指教 如果能用比较浅显的代码例子说清楚 分肯定是你的 谢谢 我看别人的项目里对某个表或者功能中都会有xxxAction类为Struts的Action类,xxxx为Struts的FormBean类,xxxxBO为业务对象类,xxxSO为查询数据类,xxxDTO为数据传输对象类。 还请高手说明下 谢谢`
我看到对同一张表 业务对象BO还有DTO都差不多代码 一些字段 然后就是get/set方法 只是字段数量不同 谢谢各位帮忙 小弟菜得很

1.一般的FormBean里面的字段都是String型的,用于将页面的表单封装,如:
public class UserForm{
String userId;
String userName;
String userAge;
...
//以及一些他们的get/set方法
}
因为从页面表单提交过来的值都是String的.

2.DTO里面属性的类型和数据库表的字段类型相同,否则你的hibernate的hbm.xml会报错。
如:
public class UserModel{
int userId;
String userName;
int userAge;
...
//以及一些他们的get/set方法
}

3.BO里面一般可能会放一些和业务相关的属性:
比如下订单业务,需要用到用户表的字段(姓名,地址,联系电话等字段)和商品表的字段(商品名称,商品价格等字段),那么BO可能会是:
public class OrderService{
//-----------用户表
String userName;
int userAge;
String address ;
...以及他们的get/set方法

//商品表
String goodsName;
int goodsNum;
float price;
...以及他们的get/set方法

}
这样在需要向订单表里面插入一条记录的时候,直接session.save(OrderService的对象)即可.
只不过订单对象set值的时候,是从用户表和商品表2张表里面来的.起到一个拼装的作用.

这个题目太简单了,网上就可以查到

最典型的区别就是各自的职责不一样:
BO负责业务逻辑,操纵DTO。但是DTO不能操纵BO。
DTO负责数据传输,但BO不参与。