hibernate中可以动态进行o/r映射吗?

如题,最近在做hibernate结合struts方面的技术设计,对于hibernate的查询实在是头疼,为了把bo层同底层o/r映射框架解耦,中间用dao模式封装了下,但对于查询,有很多问题,比如开放给bo层的接口,我的本意是把所有关于hibernate的对象都对用户透明,但从现在看很难做,只好用HQL,另外对于查询结果,我如何做到动态映射po对象呢?不能一次查询把所有数据都查出来吧

抱歉,上面输错了,是开放给dao的接口,不是bo

这个问题,我想首先应该确定你的DAO的设计来源:
如果你的设计是从下到上,如ddl-->>javabeans(po)-->>DAO(s)-->>Business Logic,则DAO封装的是对某个或某组po的持久化操作.则你的DAO需要处理bo和po的转换工作.业务逻辑层只是处理对bo进行处理,然后直接传给DAO做持久化工作.同样,DAO也只返回bo.

如果你的设计是由上到下,如业务用例分析-->>业务逻辑-->>DAO-->>po(s)-->>ddl.则你的DAO的功能是完成某个原子的业务相关的持久化工作.


另外,你说的:查询结果动态映射po,是什么意思?

查询可以做分页的啊.hql已经提供了很好的支持.

> 这个问题,我想首先应该确定你的DAO的设计来源:
> 如果你的设计是从下到上,如ddl-->>javabeans(po)-->>DAO(s
> -->>Business
> Logic,则DAO封装的是对某个或某组po的持久化操作.则你的DA
> 需要处理bo和po的转换工作.业务逻辑层只是处理对bo进行处?> ,然后直接传给DAO做持久化工作.同样,DAO也只返回bo.
>
> 如果你的设计是由上到下,如业务用例分析-->>业务逻辑-->>D
> O-->>po(s)-->>ddl.则你的DAO的功能是完成某个原子的业务?> 关的持久化工作.
>
>
> 另外,你说的:查询结果动态映射po,是什么意思?
>
> 查询可以做分页的啊.hql已经提供了很好的支持.

多谢指教,我想我的dao设计应该指的是某个原子业务相关的持久化工作,所谓动态映射,是指hibernate中是否提供了这样的一个机制,比如对于人员一张表,我只查了姓名一项,是否hibernate要把所有的表中所有的数据都映射到相应的po对象中。能不能提供类似回调的机制让我动态填充po中的数据,比如我只要姓名,那我就从数据库中取姓名字段填到po中好了,这样可以提高效率是吧!

再说几句,hibernate中提供了对类的懒加载,我想知道hibernate中能否提供po属性的懒加载来提高效率,或者进一步把懒加载时机的权利下放给调用者