走近SSH之Hibernate--Hibernate入门相关简介
来源:互联网 发布:mac set android ndk 编辑:程序博客网 时间:2024/05/16 09:32
Hibernate是一个工作于持久化层的能实现ORM的框架,它对JDBC进行了非常轻量级的对象封装,所以我们可以随心所欲的使用对象编程思想操纵数据库。
一、理解Hibernate需要知道的几个基本概念:
持久化(Persistence):即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等。
持久化层(Persistence Layer):即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。它包括和数据库的相关操作如下:
保存:把数据保存到数据库中。
更新:更新数据库中某条记录。
删除:从数据库中删除一条记录。
查询:根据特定的查询条件,把符合条件的数据从数据库中加载到内存中去。
在设计中分出持久化层的目的是为了提高应用程序的可维护性、可扩展性(适应不同的数据库)、可重用性和可管理型。传统程序扩展为具有独立持久化层的程序:
持久化层的分离
ORM:全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。
对象模型<==>关系模型
二、Hibernate应用介绍
Hibernate应用于持久层,完成的是对象模型和关系模型转换,如图:
ORMapping基本对应规则:
1.类跟表相对应
2.类的属性跟表的字段相对应
3.类的实例与表中具体的一条记录相对应
4.一个类可以对应多个表,一个表也可以对应多个类
5.DB中的表可以没有主键,但Object中必须设置主键字段
6.DB中表与表之间的关系映射成为对象间的关系
7.Object中属性的个数和名称可以和表中定义的字段个数和名称不一样
一幅图看出JDBC操作数据库与ORMapping的区别:
Hibernate能干什么
Hibernate主要用来实现Java对象和表之间的映射,除此之外还提供数据查询和获取数据的方法,可以大幅度减少开发人员使用SQL和JDBC处理数据的时间。
Hibernate的目标是减少开发者对数据持久化相关的编程任务。对于以数据为中心的程序来说,他们往往只在数据库中使用存储过程来实现商业逻辑,Hibernate可能不是最好的解决方案;对于那些在基于Java的中间层应用中,它们实现面向对象的业务逻辑和商业逻辑的应用,Hibernate是最有用的。
以上是现阶段我对Hibernate 的一些肤浅理解,还需要在实践中得到证实!
- 走近SSH之Hibernate--Hibernate入门相关简介
- 走近SSH之Hibernate--HQL
- 走近SSH之Hibernate--Hibernate环境搭建(MyEclipse+MySql)
- 走近SSH之Hibernate--Hibernate创建数据表并向表中写入数据(Hibernate+MySql)
- SSH学习之Hibernate的简介
- 走近SSH之Hibernate--com.mysql.jdbc.CommunicationsException: Communications link failure due to underlyi
- SSH框架-HIbernate简介
- 【SSH框架】--Hibernate入门
- Hibernate 入门之Hibernate简介和体系结构(一)
- Hibernate 入门之Hibernate简介和体系结构(一)
- Hibernate入门(二)之相关API
- Hibernate入门简介
- Hibernate入门简介
- Hibernate入门简介
- Hibernate 简介,实例入门
- Hibernate 入门简介
- Hibernate 入门简介
- Hibernate入门简介
- 【工具】Beyond Compare工具的文件夹比较功能
- 介绍Robotium+Orange实现androidUI自动化测试
- 关于html5 canvas画布
- 防止用户重复登录pptpd以及相关源代码
- Oracle+RAC+ASM数据库ora-00257日志归档器错误解决方法
- 走近SSH之Hibernate--Hibernate入门相关简介
- 线程练习题1
- openstack -Block Storage - Boot from volume
- 0003 容易混淆的格林威治时间和不同于格林威治时区的时间转化【基础】
- MFC的CListCtrl的使用与技巧
- 自己(女程序员)的奋斗路程
- #ifdef __cplusplus extern "C" { #endif 的解释
- mysql存储引擎类型及存储引擎的选择
- .net中将Json包装类