技术开发 频道

成功使用Hibernate/JPA的十点心得



3)不要试着映射所有的属性
 
我们总是设法使用工具,如Dali来映射所有的东西,然后形成一张表格(一些表格有上百列 !)。这最终会很麻烦。为什么?因为我们使用的是共用的,先前的数据库,有许多的字段是我们并不关心和从来不使用的。映射它们只会导致性能问题和造成混乱。
 
4)让数据库做自己擅长的工作
 
我们想有一个好的,清晰的数据模型,因此我们不惜任何代价写一些额外的查询语句来获取对象相关数据,要么使用存储过程,要么使用函数。这是做法是错误的,数据库优势在于存储,而不是保持Hibernate创建或读写的数据。举个例子,我们有一个对象,与之相关联的有一个状态。这个状态在整个应用程序中都要用到,因此,它毫无疑问是要执行的,但是,我们不想每次都要单独的写一个查询语句。这个问题在于,这个状态是从一些统计计算中派生出来的,并且这些统计计算需要用到一对多的关系。每次从加载的对象中读取数据的代价是非常高的。后来跟我们其中的一位数据库管理员交流了一下,发现一个我们可以使用的sql函数能够很快的获得该状态。我们使用@Formula来映射成一个状态属性,就能得到我们所需要的所有东西。这仍就是域模型的一部分,但是执行起来非常好。有时像这样的一个折衷的办法能够起到很大的效果。
 
5)分解数据库
 
在一开始,我就想在Hibernate中模型化整个数据库。结果发现这是不切实际的,原因如下:
a)           这是一项巨大的工程,并且要花费几周的时间,而用户根本看不到你做了什么实际的工作。
 
b)          我不可能在第一次就把它弄好,后继的开发者无论如何都会修改它们的。
 
现在有一个趋势,就是希望在开始之前,将所有的事情都进行映射,但是,当时你开始这么做后,你不需在这上面花很多的时间。我后来发现一个好的办法,就是将数据库分解,工作的时候一块一块的进行,发现这很有帮助。
0
相关文章