使用hibernate的最佳实践:
1 在做关系的时候 尽可能使用单向关联 不要使用双向关联
2 在大项目中 如果数据量超过百万行的项目 使用Hibernate可以酌情考虑一下几个原则:
2.1重要:不要使用对象关联 尽可能使用冗余字段来替代外键(带来的问题就是必须修改所有的冗余)
因为百万条数据 如果使用外键来跨表查询 那么性能会非常的慢 比如model1的设计
但是也有问题:比如在修改班级的名称时候 我们仍然需要把学生里面的班级的名称给修改
虽然这样 效率仍然很高
如果有一个需求 就要使用student 又要classroom又要special 那么我们可以创建一个DTO传输类 不需要
在数据库中建立很多冗余字段,而只要建立DTO类 在表示层时候,我们分别从数据库取不同的对象就可以
2.2查询数据不再使用HQL(查询会进入两级缓存 效率低) 全部使用SQL查询,如果涉及缓存,自己根据情况,自己加入相应的缓存
而不使用Hibernate的缓存。 hibernate的SQL查询是不进入缓存的。 hibernate的SQL查询 非常好用
其他增加 修改 删除 还是用HQL 很方便
1 在做关系的时候 尽可能使用单向关联 不要使用双向关联
2 在大项目中 如果数据量超过百万行的项目 使用Hibernate可以酌情考虑一下几个原则:
2.1重要:不要使用对象关联 尽可能使用冗余字段来替代外键(带来的问题就是必须修改所有的冗余)
因为百万条数据 如果使用外键来跨表查询 那么性能会非常的慢 比如model1的设计
但是也有问题:比如在修改班级的名称时候 我们仍然需要把学生里面的班级的名称给修改
虽然这样 效率仍然很高
如果有一个需求 就要使用student 又要classroom又要special 那么我们可以创建一个DTO传输类 不需要
在数据库中建立很多冗余字段,而只要建立DTO类 在表示层时候,我们分别从数据库取不同的对象就可以
2.2查询数据不再使用HQL(查询会进入两级缓存 效率低) 全部使用SQL查询,如果涉及缓存,自己根据情况,自己加入相应的缓存
而不使用Hibernate的缓存。 hibernate的SQL查询是不进入缓存的。 hibernate的SQL查询 非常好用
其他增加 修改 删除 还是用HQL 很方便