Hibernate 实战总结(持续完善)

1、由于Hibernate的把每一张表看成是一个对象,如果数据库存在外键关系,表的外键在映射成hibernate ORM对象的时候,会以关联的对象的形式存在。

    如下图的PolicyType,数据库中是POLICY_TYPE字段,但由于外键的关系,在Hibernate中以PolicyType对象存在。这样增加Policy实体的复杂程度,有时因为save一个Policy对象,却不得不创建一个policyType对象,set进入Policy中。

结论:在使用hibernate时,不建议使用数据库的外键约束,已代码逻辑保证数据的正确性和安全性,避免不必要的麻烦和性能损失。当然,建立外键的好处就是使得数据更安全,用UML设计工具查看数据库设计逻辑更清晰。酌情考虑外键的使用。

ps:当外键不是主键的时候,请加上referencedColumnName 属性指定外键的字段(JPA 规范外键是主键)

Hibernate 实战总结(持续完善)_第1张图片

Hibernate 实战总结(持续完善)_第2张图片

2、实体类和pojo类的复用

    很多情况,数据库的实体类和controller层的pojo类是大致相同的,所以两者可以进行复用。如果controller层需要的字段,不需要持久化的数据库中,可以增加 @Transient 来告诉Hibernate 这个字段没有映射数据库字段。例如下图所示:

Hibernate 实战总结(持续完善)_第3张图片

3、hibernate hql 返回多个对象

Hibernate 实战总结(持续完善)_第4张图片

你可能感兴趣的:(Hibernate 实战总结(持续完善))