Hibernate逍遥游记——(一)访问关系数据库
来源:互联网 发布:淘宝客佣金扣除红包吗 编辑:程序博客网 时间:2024/04/30 00:39
先做一些准备工作:
假设MySQL数据库中有表MONKEYS:
MONKEYS表ID<<PK>>NAME
AGE
GENDER
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对象来完成对数据库的操作。
- Hibernate逍遥游记——(一)访问关系数据库
- Hibernate逍遥游记——(四)声明数据库事务
- Hibernate逍遥游记——(二)对象—关系映射技术
- HIbernate逍遥游记——(三)通过Hibernate操纵对象
- Hibernate逍遥游记 读书笔记
- Hibernate——以面向对象的思维操作关系数据库(一)
- Hibernate—(关系)
- Hibernate(4)——单向多对一关系
- 关系数据库(一)
- Apache sdo学习笔记(六)——数据访问服务(DAS)访问关系数据库
- Hibernate映射关系(一)
- 数据库原理(一)—— 关系代数(二)
- Nosql笔记(一)——关系型数据库回顾
- 关系数据库模型(一)——读书笔记
- 数据库原理(一)—— 关系代数
- Tech Ed游记(一)
- TechEd 2005游记(一)
- 平遥游记(一):行走
- revit2009中国样板,注册机
- Minesweeper UVA- 这尼玛坑爹的空行
- Win7 CreateRemoteThread 另类使用方法
- 黑马程序员高级视频学习笔记IO输入输出流File类
- $(this).index() 值一直为-1
- Hibernate逍遥游记——(一)访问关系数据库
- SQL描述(4)
- 【c++】error 某方法 declared as a 'virtual' field
- "[ERROR] Could not find git path"
- centos6 安装chrome,wps
- [百度百科]英语状语
- oracle通过impdp导入不同表用户、不同表空间的数据
- Win7无线网卡分享wifi不稳定,手机连接总是自动断开,换这个网卡驱动就OK啦
- linux tty pty pts 概念 区别