详细描述Hibernate应用

开发 后端
这里介绍很多Java工程师在作Hibernate应用开发时会遇到一些问题:我该写哪些东西?映射文件的XML元素我为什么记不住?等等。以下就这两个问题谈谈我的一些心得。

在向大家详细介绍Hibernate应用之前,首先让大家了解下Hibernate是一个解决对象关系映射的框架,然后全面介绍Hibernate应用。

很多Java工程师在作Hibernate应用开发时会遇到一些问题:我该写哪些东西?映射文件的XML元素我为什么记不住?等等。以下就这两个问题谈谈我的一些心得。

首先,学习任何一门新的框架首先要理解它所解决的问题域。Hibernate是一个解决对象关系映射的框架(ORM),这说明ORM必须遵循一定的规则,否则就不可能形成框架。ORM遵循的基本规则是什么呢?用这样四句话进行总结:
1. 类型(class)对应表(table);
2. 属性(property)对应列(column), 必须有特殊属性对象标识符(id)对应主键(primary key);
3. 类型的关联(association)关系对应外键(foreign key);
4.类型的实例即对象(object)对应记录(record)或行(row)。

前三项描述的是静态特性,映射文件主要描述的就是这三项静态特性。ORM技术O在前,当然映射文件应以其对应的类型(class)为中心进行描述。 Gavin King在使用XML时喜欢用元素的属性来描述不具扩展前景的数据, 其中name属性描述java程序中JavaBean的属性(属性值大小写敏感)。映射文件的根元素用英文的mapping就可以了,但Gavin King不能脱俗,加上了Hibernate的前缀让人们记住他。

有了以上的准则,加上我们学会了文章一开始就列出的几个英文单词,Hibernate映射文件中常用的60%-70%已经印在了我们的脑袋。让我们用一个不包含关联关系的例子来验证:

  1. package com.kettas.hibernate.entity;  
  2. import java.io.Serializable;  
  3. import java.util.Date;  
  4. public class Student implements Serializable{  
  5. private Long id;  
  6. private String name;  
  7. private Date birthday;  
  8. private char gender;  
  9. public Student() {  
  10. super();  
  11. }  
  12. public Student(String name, Date birthday, char gender) {  
  13. super();  
  14. this.name = name;  
  15. this.birthday = birthday;  
  16. this.gender = gender;  
  17. }  
  18. Date getBirthday() {  
  19. return birthday;  
  20. }  
  21. void setBirthday(Date birthday) {  
  22. this.birthday = birthday;  
  23. }  
  24. char getGender() {  
  25. return gender;  
  26. }  
  27. void setGender(char gender) {  
  28. this.gender = gender;  
  29. }  
  30. Long getId() {  
  31. return id;  
  32. }  
  33. void setId(Long id) {  
  34. this.id = id;  
  35. }  
  36. String getName() {  
  37. return name;  
  38. }  
  39. void setName(String name) {  
  40. this.name = name;  
  41. }  

除了generator(生成器)和unsaved-value外,我们没有看到更多的英文词汇。generator说明主键的生成算法,unsaved-value的值让Hibernate能够判断对象是否为transient(瞬态)对象。

除了要写实体类型和映射文件,Hibernate应用还需要写什么呢?当然必须有一个Java应用使用Hibernate的API操作实体。这个应用知道操作哪些实体?如何和数据库通讯来完成持久化呢?通过配置文件就行了。所以配置文件里有描述连接数据库的属性和映射文件的元素。

【编辑推荐】

  1. 分析Hibernate插入操作
  2. 剖析Hibernate批量更新
  3. 全面讲解Hibernate二级缓存
  4. 讲述Hibernate核心接口
  5. 概括Hibernate批量处理
责任编辑:佚名 来源: IT168
相关推荐

2009-09-25 14:28:40

Hibernate S

2009-09-25 11:04:32

Hibernate3实

2009-09-14 16:33:55

LINQ To XML

2009-09-14 14:58:52

LINQ to XML

2009-09-14 13:14:49

LINQ序列

2010-05-10 13:33:11

Oracle存储过程

2010-02-05 16:58:18

Android服务

2009-11-18 11:14:49

2009-09-07 15:15:43

2009-08-27 15:17:40

C# const变量

2009-08-26 15:53:48

C#扩展方法

2009-10-10 10:04:50

RHEL合法使用

2009-08-10 16:40:03

C#索引器

2010-04-09 17:45:06

Oracle索引

2009-10-15 14:59:45

网络布线光纤技术

2009-09-08 11:09:39

LINQ数据源

2010-03-17 18:21:26

Python数据结构

2010-09-08 15:10:48

2011-11-02 09:29:42

存储虚拟化虚拟化

2009-10-16 11:02:40

VB调用动态连接库
点赞
收藏

51CTO技术栈公众号