hibernate映射与数据传输的问题?
利用hibernate的映射关系,以及级联的设置很方便我们获取数据。但是我有这样一个需求,手机端通过json获取一个部门的信息,一个部门下面有上百人,每个人又有上百的历史任务,其他的数据不知凡几,我都建立的映射。这样一个获取部门的请求不就差不多把一个数据库度弄走了吗?怎么获得我只需要的数据。是不是除了映射数据库的实体类层,还需要一个专门为转换成json字符串的,实体层啊。不然获得一个就获得了关联的几乎所有数据。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
引用来自“颖辉小居”的评论
引用来自“嫂来哇”的评论
可以用hibernate 拿出数据,然后重新定义map,或者重新定义model
引用来自“ahyyxx222”的评论
这是因为你的系统并没有垂直切分,以致你的关联像蜘蛛网一样。在跨业务模块的地方要坚决打断关联关系,比如订单模块和用户模块之间,订单那边存用户冗余信息,而不是把订单关联用户表。
是的,其实还有一个办法,就是在原有的model上用JSON注解去掉要JSON序列化的字段
引用来自“嫂来哇”的评论
可以用hibernate 拿出数据,然后重新定义map,或者重新定义model
这是因为你的系统并没有垂直切分,以致你的关联像蜘蛛网一样。在跨业务模块的地方要坚决打断关联关系,比如订单模块和用户模块之间,订单那边存用户冗余信息,而不是把订单关联用户表。
可以用hibernate 拿出数据,然后重新定义map,或者重新定义model
难道用hibernate不好吗?这个一定有解决方法的吧
不要用hibernate映射,用sql自身来搞定。
如果用户和部门,在项目上划规一个模块,那用户可以有一个关联的部门实体。
如果用户和部门,属于两个模块,那用户实体里面会有一个部门id和一个部门名称,就足够用户列表页使用了。不会和部门实体做hibernate关联。
反之部门那边的set<用户>也是一样。
原则就是,不同模块间,做冗余字段,不要无限地关联下去,根据能承受的系统复杂度来分模块。像订单模块和用户模块,怎么都是不能搅到一起的,订单表也绝不会关联用户表,只会在订单实体里放个用户id,用户名,或者手机号这些。
即使是在一个模块里,有关联的两个实体,加上了lazy延迟加载,在查询前也可以通过criteria条件控制是否立即加载,