Hibernate逍遥游记——(一)访问关系数据库

来源:互联网 发布:淘宝客佣金扣除红包吗 编辑:程序博客网 时间:2024/04/30 00:39

先做一些准备工作:

 假设MySQL数据库中有表MONKEYS:MONKEYS表ID<<PK>>
NAME
AGE
GENDER

表1-1 MONKEYS示例表
并且我们也编写了一个代表猴子细腻些的Monkey类。

package mypack;public class Monkey{  private Long id;  private String name;  private int age;  private char gender;  public Monkey(){}  public Long getId(){    return id;  }  private void setId(Long id){    this.id = id;  }  public String getName(){    return name;  }  public void setName(String name){    this.name=name;  }  public int getAge(){    return age;  }  public void setAge(int age){    this.age =age ;  }  public char getGender(){    return gender;  }  public void setGender(char gender){    this.gender =gender ;  }}


1. 访问关系数据库的途径


1.1 通过数据库的客户程序与数据库服务器交互

直接用客户端程序与数据库通信过程如图1-1所示:

图1-1 用户通过Mysql自带的客户程序与Mysql服务器通信

1.2 通过java程序与数据库服务器交互

1.2.1 java程序通过JDBC API访问数据库

Java程序通过JDBC驱动程序访问数据库的过程如图1-2所示:

图1-2 Java程序通过JDBC驱动程序与数据库服务器通信

java程序只需和JDBC 驱动程序的API交互,不必关心JDBC驱动程序与数据库服务器之间的通信细节。JDBC API 为java程序提供了访问数据库的接口和类,主要包括:DriverManager、Connection、Statement、PreparedStatement、ResultSet。其关系如图所示:

图1-3 JDBC API 中的主要类的类框图

1.2.2 Java程序通过Hibernate API访问数据库

Hibernate封装了JDBC API,在一个session中完成对数据的持久化操作,几乎不涉及SQL语句的操作,很容易实现平台无关的数据库操作,如图1-4所示:

图1-5 java程序通过Hibernate API访问数据库

Hibernate API 中最核心的一个接口就是Session接口,Session接口实现save()方法执行步骤:(假设是Monkdy对象)

    1)java反射机制找到Monkey对象的类型为Monkey.calss;

    2)参考ORM元数据(xml或注解),找到Monkey类对应的为MONKDYS表,以及属性与表的对应字段;

    3)根据映射信息生成SQL语句:

    insert into MONKEYS (ID,NAME,AGE,GENDER) values(1,'智多星',1,'M')
    4)通过JDBC API 执行SQL语句。


2. java对象持久化的概念

Monkey对象的持久化过程如图1-6所示:

 

图1-6 对象的持久化

业务数据在有两种表现形式:

  • 在内存中表现为Monkey对象
  • 在关系数据库中表现为MONKEYS表中的记录。

”持久化“就是把对象永久的保存到数据库中。

3. 小结

 三种访问数据库的途径如图1-7所示:

图1-7  访问关系数据的各种途径

利用Hibernate可以解除Java程序与关系数据库绑定关系,使得编程人员完全按照面向对象的思维来编写访问数据库的代码。Hibernate用ORM(或注解实现)来描述对象模型与关系数据库的对应关系,然后就可以在session中利用Hibernate API操纵java对象来完成对数据库的操作。

0 0