Hibernate专业知识介绍

开发 后端
这里介绍Hibernate专业知识,包括让数据库做自己擅长的工作、分解数据库和密切注意数据库触发器有如下两个原因。

Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate专业知识,包括介绍Hibernate/JPA的一些思想等方面。

大约一年以前,我为了学习一些Hibernate专业知识,因此我参加了一个Hibernate项目。从那时起,我一直在使用Hibernate框架下的JPA(Java持久API)实现,使用的思想仍就是一样的。那个项目使用了一个数据库,这个数据库规模有些大,略显落后,并且还被许多的应用程序共用。为了尽快加入到项目中,我开始学习一些Hibernate知识。从书本上的例子开始学习,感觉很简单,学起来也很快,但是发现从零开始开发一个项目,并且控制它又是另外一回事了。试着在一个大型,复杂,被许多应用程序共用的数据库上使用Hibernate就又完全不同了。弄清楚了我可能遭遇到的技术难点,我开始想别的招了,要尽快从另外的方向开始,克服困难。

在最终的学习和实践中,我发现我还是学到了许多重要的东西,虽然我们的项目还没有完全做完,但是我认为我们目前已经非常漂亮的应用了Hibernate/JPA的一些思想。现在我需要重新思考反省我所学到的东西,如下便是我学到的一些Hibernate专业知识:

1.让数据库做自己擅长的工作

我们想有一个好的,清晰的数据模型,因此我们不惜任何代价写一些额外的查询语句来获取对象相关数据,要么使用存储过程,要么使用函数。这是做法是错误的,数据库优势在于存储,而不是保持Hibernate创建或读写的数据。举个例子,我们有一个对象,与之相关联的有一个状态。这个状态在整个应用程序中都要用到,因此,它毫无疑问是要执行的,但是,我们不想每次都要单独的写一个查询语句。这个问题在于,这个状态是从一些统计计算中派生出来的,并且这些统计计算需要用到一对多的关系。每次从加载的对象中读取数据的代价是非常高的。后来跟我们其中的一位数据库管理员交流了一下,发现一个我们可以使用的sql函数能够很快的获得该状态。我们使用@Formula来映射成一个状态属性,就能得到我们所需要的所有东西。这仍就是域模型的一部分,但是执行起来非常好。有时像这样的一个折衷的办法能够起到很大的效果。

2.分解数据库

在一开始,我就想在Hibernate中模型化整个数据库。结果发现这是不切实际的,原因如下:
◆这是一项巨大的工程,并且要花费几周的时间,而用户根本看不到你做了什么实际的工作。
◆我不可能在第一次就把它弄好,后继的开发者无论如何都会修改它们的。

现在有一个趋势,就是希望在开始之前,将所有的事情都进行映射,但是,当时你开始这么做后,你不需在这上面花很多的时间。我后来发现一个好的办法,就是将数据库分解,工作的时候一块一块的进行,发现这很有帮助。

3.密切注意触发器

密切注意数据库触发器有如下两个原因:
◆在后台触发器很隐蔽的执行了一些功能,让你很是疑惑,不知道发生了什么。
◆当你在Hibernate端需要复制一些东西的时候,触发器会做一些手脚。之前我们好几次没有认识到这个教训,导致我们丢失了很多数据,这些都是由触发器引起的,这几乎让我们很是郁闷。以上总结我的一些Hibernate专业知识。

【编辑推荐】

  1. Hibernate可行性全面概括
  2. Hibernate Sequence基础描述
  3. 浅析Hibernate使用EhCache
  4. Hibernate的一级Cache
  5. Hibernate update浅谈
责任编辑:佚名 来源: Sina
相关推荐

2011-06-09 13:58:25

程序员

2018-03-26 15:02:21

人工智能应用领域专业知识

2009-04-15 18:23:00

2011-01-28 09:22:06

2020-09-14 18:42:47

物联网

2009-03-16 09:16:56

柳传志复出IT专业知识

2009-09-27 14:41:05

Hibernate I

2009-09-28 13:49:44

Hibernate Q

2009-09-22 09:27:29

Hibernate P

2009-09-25 13:55:05

Hibernate使用

2009-09-28 10:24:58

Hibernate基础

2009-09-25 09:46:03

Hibernate s

2009-06-17 11:18:02

Hibernate延迟

2009-09-23 17:41:05

Hibernate事务

2009-09-23 11:07:11

Hibernate基础

2009-09-27 14:24:10

Hibernate配置

2022-03-14 14:26:19

戴尔

2009-09-21 14:50:01

Hibernate部署

2009-06-12 16:00:13

Session方法Hibernate

2009-09-27 10:10:47

Hibernate处理
点赞
收藏

51CTO技术栈公众号