Hibernate--最佳实践 重要
2016-01-08 16:32
375 查看
使用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 很方便
相关文章推荐
- 租约机制简介
- 3.5.2赋值运算
- 22-《电子入门趣谈》第四章_自己制作电路板-4.3Altium Designer (第一部分)
- 适配器模式 c#
- Canvas与Image互转
- 英文条码创建/打印/java调windows API(方向)2
- 64位centos6.5安装mysql-5.6.25问题解决
- 为应用程序池**提供服务的进程意外终止。进程ID是**。进程退出代码是'0x80'
- 插入排序
- 对于用VS2013操作Word时编译失败的问题可以完美解决
- xib在UITableView中的用法
- 第一次用MarkDown编辑器
- 开发笔记:代码和资源分离发布SDK
- Android gradle plugin sync failed 错误
- iOS中NSDictionary和NSMutableDictionary的用法
- 第一个spark 入门级 pv计算
- 静态链表例题
- MFC入门教程
- 数列排序
- 数组去重Array