Hibernate返回对象的好处?

Hibernate返回对象的好处?

最近在公司做了2个项目,先说老项目吧。用的是ssh,原生的。所以很多从数据库查询
的方法返回的都是对象,而且因为项目比较老,比较没啥表关联。比如一个界面查询学生,返回的就是这个学生的对象的集合。我发现很不合理,因为如果这个学生加了一个关联表,比如兴趣表,那么我岂不是得改这个controller service dao层3个接口的返回值吗。

还有一个就是用的公司框架封装的,查询返回值并不是一个对象,是一个List 这个map里面放的就是对象的属性跟值,如果想要加关联表的话只要在dao层改sql就可以了。

由上面2个结论,我想知道这个hibernate返回值是对象到底有啥好处?

如果要加关联表岂不是要大改方法?

5个回答

你用的语言是Java,Java是面向对象的。你用的数据库是关系型数据库,是面向表以及表的关联的。hibernate自动完成对象和关系表的映射。
作为用面向对象的方式写程序的程序员,显然如果你的程序要处理的数据都是对象,是最简单直观的。
而你的程序就可以直接和对象打交道。当你的业务复杂的时候,你的对象也变得复杂。对象之前还有嵌套聚合的关系。这些全部在框架层面得到处理,你就可以省很多事情。

StackTc
StackTc 回复caozhy: 庆幸的是,我并不需要自己将List<Map> 拆掉,再组成对象,我只要返回一个List<Map> 公司框架通过jsp处理直接显示在界面,谢谢你耐心的解释。
接近 2 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复StackTc: 可以,Hibernate就是干这个的通用程序,它也是java写的。你也可以这么做,但是那样不是重复劳动么。
接近 2 年之前 回复
StackTc
StackTc 回复caozhy: 我的意思是 如果我 查询页面的 建议返回 List<Map> 程序内部调用的话 返回 还是对象 这样可以吗。
接近 2 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复StackTc: 你的业务都是java写的,而且都是对象,如果都是recordset、list之类的,就需要来回转换,或者干脆不用对象,把java当低级语言用。
接近 2 年之前 回复
StackTc
StackTc 回复caozhy: 所以麻烦之处就是,查出来一个list<Map> 然后再重新组装一次是吗?虽然代码上麻烦了,但是健壮性更强了。
接近 2 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复StackTc: dao是数据访问对象,它本身不是数据传输对象(DTO)或者领域对象(DO),而ORM产生的对象是DTO或者DO,当然,你也可以不用ORM,手工去组装这些对象,但是不是更麻烦么?
接近 2 年之前 回复
StackTc
StackTc service dao 的返回值不是吗
接近 2 年之前 回复
StackTc
StackTc 可是改如果查询结果增加一个关联表的字段的话 返回值要改 controller
接近 2 年之前 回复

返回对象确实会有上面所说的问题,但是一个模型的变更,一般都是在前期才会出现频繁,后期就少了。而且目前的发展趋势,
查询类的模型不应该和基本的业务模型混在一起,这样会导致很多问题,特别是性能的问题。一个人在写表,另一人又大批量的关联表处理数据。
在目前的互联网应用里面,传统的模型已经不用了。一般数据表分为,基础数据和加工的数据。说要的录入都是存入基础数据表。然后通过各种消息任务
进行数据加工,如果需要数据读取,则读取数据加工后的表。那么数据加工后的表,可以根据需要动态扩展。也就是可以实现你传入的对象是动态对象。
可以根据你的返回结果,自动负责加载你的值。

添加方法而不是修改,比如关联兴趣表,你可以新建hobby对象,再查询。别人的代码不要瞎改,小心被打

StackTc
StackTc 可以说详细点吗
接近 2 年之前 回复

如果有关联表你只需要在数据库添加字段,然后在生成对应的对象类,此时在所对应的类的属性的字段就是外键关联表的对象数据。

java的思想就是面向对象变成,在java中一切都是对象。对象之间也方便接下里的传值操作和一系列业务处理。
对于表之间的关联关系,目前我们公司的数据库表设计不做关联,这样可以避免接下来对数据库数据操作引出来的一些关联的问题。
用的最多的索引。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!