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

先做一些准备工作:

 假设MySQL数据库中有表MONKEYS:

MONKEYS表
ID<>
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所示:

Hibernate逍遥游记——(一)访问关系数据库_第1张图片

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

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

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

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

Hibernate逍遥游记——(一)访问关系数据库_第2张图片

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

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

Hibernate逍遥游记——(一)访问关系数据库_第3张图片

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

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

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

Hibernate逍遥游记——(一)访问关系数据库_第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所示:

 Hibernate逍遥游记——(一)访问关系数据库_第5张图片

图1-6 对象的持久化

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

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

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

3. 小结

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

Hibernate逍遥游记——(一)访问关系数据库_第6张图片

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

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

你可能感兴趣的:(Hibernate3.3,hibernate,访问数据库,持久化,session)