Hibernate查询

我看有的项目是先建表,通过表来生成实体类,实体类中没有关联关系只有关联对象的主键,所以我想问一下,大家都是怎么用Hibernate的,映射文件中有没有关联关系(one-to-many、many-to-many),查询时怎么查询,关联查询时,有时怎么查询的。

0

4个回答

当结果不止一个实体表时,分开查,然后再组装。
在Dao层查,在Service层组装。假如某个组装动作比较频繁,也可以做一个帮助类,把
组装动作定义好。不在Dao层组装的原因是为了尽量保证Dao的简单性及可重用性。
这里面有个问题,就是当实体间是多对多关系的时候,肯定要手动建一张中间表,这个时候,
就不能使用JPQL/HQL了,直接使用原生的Sql。

ps. 并不是说每次都不能维护关系,只是我的项目中关系比较复杂,再加上有JSONLIB的序列化,
所以才选择不维护关系,这样至少容易控制。

0

恩,其实这个问题点出了一个重要的问题:外键维护。 我现在更加倾向于你描述的,不保存关系,只留外键。原因是当业务复杂时,实体类间的引用过于混乱,甚至可能因为互相引用出现cycle,另一方面,假如你使用jsonlib等工具来序列化结果的话,那么会也会造成数据爆炸。
在一些关系简单的场合,维护部维护关系都不重要了。假如都采用外键的话,那么就使用HQL/JPQL来解决。

0

引用Hibernate之后,按照规定填写配置文件就可以了,一个表对应一个实体,Hibernate查询的时候就时候实体间相关联字段查询就可以了!不过一般hibernate本身的查询不是很灵活,有些地方还是用HQL比较好!

0

我们项目一般采用Hibernate做增删改操作,因此,先设计数据库表,再用工具生成domain类及配置文件。配置文件中一般用many-to-one关系就足够了,配置文件中无外键关系。查询用HQL或手写SQL。

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