`
visionary_2006
  • 浏览: 127075 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于JavaEE项目开发中数据库建设及数据配置文件小谈

阅读更多

重新用strtus spring hibernate重构PetStroe案例.规化了一下数据库,里面用到了太多的联级.对于像我一样的新手来说,可能在设计的时候会遇到一些麻烦

 

比如会问:如何在数据库中进行联级,是否需要在数据库中联级,在hibernate配置文件中进行联级好还是在数据库中进行联级好?如何在hibernate配置文件中进行联级?等等

 

不管你是什么水平,相信你都发问过.那么现在我以一个新手的视角来谈谈自已的一些看法.希望有不对的地方,请高手们留下您的脚印.

 

首先.大项目中联级操作是肯定会用到的,但大公司开发的时候一般用一些数据模型软件直接生成数据库文件.因为这个我没用过,所以不清楚是否将所有的联级都在数据库中生成.我在网上问了一些朋友及自己的一些看法总结得出是,只有特别重要的字段才进行联级,也就是建立外键.原因是如果所有关联数据都进行了关联,使得维护变得困难.

 

那么不是所有的关联都在数据库中配置,固然是在hibernater配置文件中配置.而且必须将所有的关联都进行配置.

 

如何进行配置呢,最简单也是最有效的方法是,您首先得有一副全局E-R模型.标示出对应的关系,在配置时除了基本的数据项以外,还必须将这些关系写进去.

 

至于如何在hiberntae配置中进行联级,这里就不说了,我也说不好,太复杂,不会的朋友有必要去查查相关资料,这里简单说一下需要注意的地方:

1.对象关联关系有一对一,多对一,一对多和多对多,其中多对一和一对多关系比较常见,一对一关系有两种方式:以关键盘关联和以外键关联,一对多和多对一通常应设置为双向关联,并在"一"之一方设置iverse="true".

将一对多的关联映射,定义成双向一对多关联,并且避免能过一的那端控制关联关系有最好的性能表现.

多对多需要第三张表来保存两个实体之间的关系.

 

2.hibernate检索策略有产即检索,延迟检索,预先检索,批量立即检索和批量延迟检索.对于末端为"一"的关联,一般设置为预先抓取,对于末端为"多"的关联,一般设置为延迟检索.hibernater默认为此检索,用到的时候可以不写.

 

3.对于多对一的关联,可以关闭延迟加载,因为多个实体只对应一个实体,关闭延迟加载不会引起太多的性能下降,但对于一对多的关联,则不应该关闭延迟加载,如果关闭延迟加载,可能抓取一条主记录时,有百万条从记录随之初始化,这对性能的消耗非常大.所以对于文件中的set元素,则不可关闭延迟加载.

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics