论坛首页 Java企业应用论坛

持久层开发需要注意的一些地方

浏览 3181 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-01-06  
DAO
ORM时注意事项
Load time

使用lazy load, load data as late as possible

Load more data than needed
1) 设计domain object(在ORM中也可以说是一张数据表)不要添加太多的字段,这样load domain object时候会读出太多无用字段,影响效率,尽量遵循数据库范式, 建立Aggregate关系。
2)在读取数据时,在数据量大的时候,不要全部读取,只读取所需字段。

数据库连接是数据库中开销最大的地方,需谨慎使用
尽可能使用连接池来进行处理,在Hibernate中就是这样使用的,有一个并发连接数,但要注意的是在生产环境下不要使用Hibernate自带的连接池,要使用第三方池如c3p0.

数据分析
数据生命周期分析

分析数据是只读得还是可修改的,数据的访问及更新频率,根据这些来制定数据访问策略,如制定缓存等等

数据访问模式分析
了解数据是怎样应用的可以帮助优化数据的读取策略,如根据应用在页面上的呈现可以来制定fetchsize等。


查询模式分析
在同一个连接池中使用short-running查询和long-running reporting查询会给用户带来不好的体验,因为long-running reporting查询会长时间占用连接,因此short-running查询始终获取不到connection而被饿死。针对这种方式,使用两个连接池来处理这两种不同的查询类型。


数据访问测试
1. 使用真实、规范的数据进行测试,并在测试时不要局限于相同的数据
2. 并发压力测试是必需的

   发表时间:2009-01-07  
wangyugod 写道
ORM时注意事项
Load time

使用lazy load, load data as late as possible

Load more data than needed
1) 设计domain object(在ORM中也可以说是一张数据表)不要添加太多的字段,这样load domain object时候会读出太多无用字段,影响效率,尽量遵循数据库范式, 建立Aggregate关系。
2)在读取数据时,在数据量大的时候,不要全部读取,只读取所需字段。



同意楼主的分析, 但是不是过于理想化了?

其他的orm没怎么用; hibernate中, "只读取所需字段"要么建立很多的vo, 要么po中写很多的constructor(这种情况下没有select的字段即使不会造成对数据库的压力, 但在内存中也会有初始值, 浪费啊.)

貌似没有什么完美的解决之道.
0 请登录后投票
   发表时间:2009-01-07  
在大数据量的情况下,针对这种情况只能直接select所需字段,以数组形式返回;但是相信如果设计得当,一个domain object中不会有过多的字段,总有一部分是可以封装成另外一个object的,然后使用lazy load就可以解决这种问题
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics