Java 关于数据库 Entity 如何设计

2022-07-28 09:50:43 +08:00
 hahaFck

喜欢写 sql ,所以不想用 hibernate 类似的完全托管访问数据库的框架,一般用 mybatis 之类的将查询结果转换成 entity 。

这种情况下如果类之间有关联关系,在设计 api 的时候大家一般如何做呢。

比如 User 关联 Department ,在 User 里面是用 departmentId 还是 Department 实体,

如果用 id 属性,在一些情况下需要 department 表的信息,就需要二次查询。

用实体 Department 的情况下(查询 User 时增加 left join department ),是很方便访问关联表的数据,但是会遇到下面两个问题:

  1. 如果 Department 又关联了 Organization 属性呢?Organization 又关联了其他的 Entity 呢, 这样一个查询 User 表的数据的 sql 会关联到很多其他的表,而且很多的 sql 语句都是重复使用的,比如查询 DepartmentOrganization 的列字段和直接查询 Department 实体时的字段是一样的,如果 department 表新增加了字段,这几处的 sql 都要改。

2.

6272 次点击
所在节点    程序员
62 条回复
chihiro2014
2022-07-29 15:54:30 +08:00
jpa 有个东西叫投影
ccppgo
2022-07-29 16:03:12 +08:00
只用过 mybatis

表设计和 entity 都是存 id 比如 user 里面有 department_id

用 join 查出来之后可以直接使用 ResultMap 返回 VO 的, 不一定要返回 entity, 配合 association 功能, 效果很强大

https://mybatis.org/mybatis-3/zh/sqlmap-xml.html#%E9%AB%98%E7%BA%A7%E7%BB%93%E6%9E%9C%E6%98%A0%E5%B0%84

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/869153

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX