Hibernate学习(一)
一、基本概念
ORM(Object Relational Mapping)---是一种为了解决面向对象与关系型数据库存在的互不匹配的现象的技术。简单说: ORM 是通过使用描述对象和数据库之间映射的元数据,将 Java 程序中的对象自动持久化到关系数据中。本质上就是将数据从一种形式转换到另外一种形式。
二、Hibernate 做什么:
就是将对象模型(实体类)的东西存入关系模型中,
实体中类对应关系型库中的一个表,
实体类中的一个属性会对应关系型数据库表中的一个列
实体类的一个实例会对应关系型数据库表中的一条记录。
OOA---面向对象的分析、面向对象的设计
OOD---设计对象化
OOP---面向对象的开发
阻抗不匹配---例 JAVA 类中有继承关系, 但关系型数据库中不存在这个概念这就是阻抗不匹配。 Hibernate可以解决这个问题
三、Hibernate 存在的原因:
1、 解决阻抗不匹配的问题;
2、 目 前不存在完整的面向对象的数据库(目 前都是关系型数据库);
四、Hibernate 的优缺点:
1、 不需要编写的 SQL 语句(不需要编辑 JDBC), 只需要操作相应的对象就可以了, 就可以能够存储、 更新、
删除、加载对象,可以提高生产效;
2、 因为使用 Hibernate 只需要操作对象就可以了,所以我们的开发更对象化了;
3、 使用 Hibernate, 移植性好(只要使用 Hibernate 标准开发, 更换数据库时, 只需要配置相应的配置文件就可以了,不需要做其它任务的操作);
4、 Hibernate 实现了透明持久化: 当保存一个对象时, 这个对象不需要继承 Hibernate 中的任何类、实现任何接口, 只是个纯粹的单纯对象—称为 POJO 对象(最纯粹的对象—这个对象没有继承第三方框架的任何类和实现它的任何接口 )
5、 Hibernate 是一个没有侵入性的框架,没有侵入性的框架我们一般称为轻量级框架
6、 Hibernate 代码测试方便。
五、Hibernate 使用范围:
1、 针对某一个对象,简单的将它加载、 编辑、修改, 且修改只是对单个对象(而不是批量的进行修改),
这种情况比较适用;
2、 对象之间有着很清晰的关系(例:多个用户 属于一个组(多对一)、一个组有多个用户 (一对多));
3、 聚集性操作: 批量性添加、修改时,不适合使用 Hibernate(O/映射框架都不适合使用);
4、 要求使用数据库中特定的功能时不适合使用,因为 Hibernate 不使用 SQL 语句;
Hibernate学习(一)的更多相关文章
- Hibernate学习之——搭建log4j日志环境
昨天讲了Hibernate开发环境的搭建以及实现一个Hibernate的基础示例,但是你会发现运行输出只有sql语句,很多输出信息都看不见.这是因为用到的是slf4j-nop-1.6.1.jar的实现 ...
- Hibernate学习笔记(二)
2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...
- Hibernate学习笔记(一)
2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...
- Hibernate 学习笔记一
Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...
- Hibernate学习笔记-Hibernate HQL查询
Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...
- 我的hibernate学习记录(二)
通过上一篇文章我的hibernate学习记录(一)基本上的入门了hibernate,但是,里面还有还多东西是通过迷迷糊糊的记忆,或者说copy直接弄进去的,所以这篇文章就需要对上篇的一些文件.对象进行 ...
- Hibernate学习(二)关系映射----基于外键的单向一对一
事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特例,单向1-1与N-1的映射配置也非常相似.只需要将原来的many-to-one元素增加unique="true"属性, ...
- Hibernate学习一:Hibernate注解CascadeType
http://zy19982004.iteye.com/blog/1721846 ———————————————————————————————————————————————————————— Hi ...
- Hibernate学习---缓存机制
前言:这些天学习效率比较慢,可能是手头的事情比较多,所以学习进度比较慢. 在之前的Hibernate学习中,我们无论是CURD,对单表查询还是检索优化,我们好像都离不开session,session我 ...
- hibernate学习系列-----(2)hibernate核心接口和工作机制
在上一篇文章hibernate学习系列-----(1)开发环境搭建中,大致总结了hibernate的开发环境的搭建步骤,今天,我们继续了解有关hibernate的知识,先说说这篇文章的主要内容吧: C ...
随机推荐
- 【支付专区】之对字符串数据进行Base64位加密,解密
加密,解密 String pwd="测试"; byte[] bytes = pwd.getBytes("UTF-8"); //加密 String pwdNew= ...
- angular.js ng-class-even ng-class-odd ng-cloak(没啥技术含量)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Hihocoder 1035 [树形dp]
/* 题意: 不要低头,不要放弃,不要气馁,不要慌张. PS:人生第一道自己独立做出来的树形dp... 给一棵树,标号1到n,每条边有两个权值,步行时间和驾车时间.车在1号点. 给m个必须访问的关键点 ...
- hive基本操作
hive级联删除数据库和表 drop database t1 cascade; hive创建临时表和插入 create table t1 as select * from achi; insert i ...
- SourceInsight 精确导入Linux kernel源码的方法
相信有很多人用 SourceInsight 查看 Linux Kernel 源码,但导入源码时会遇到一些问题.1.如果把整个源码树都导入进去,查看符号定义的时候,会发现有大量重复定义,很难找到正确的位 ...
- 抽象类和抽象方法(关键字abstract)
1.抽象类不能被实例化,可以没有,一个或多个抽象方法 2.抽象方法只有方法的声明但没有方法的实现,有抽象方法的类必须声明为抽象类,子类必须重写父类所有的抽象方法才能被实例化,否则子类也是个抽象类, ...
- LVM原理及实现过程
这里引用鸟哥说明 LVM 的重点在於『可以弹性的调整 filesystem 的容量!』而并非在於效能与数据保全上面. 需要文件的读写效能或者是数据的可靠性,请参考前面的 RAID 小节. LVM 可以 ...
- Android事件分发机制(二)30分钟弄明白Touch事件分发机制
Touch事件分发中只有两个主角:ViewGroup和View.Activity的Touch事件事实上是调用它内部的ViewGroup的Touch事件,可以直接当成ViewGroup处理. View在 ...
- 【练习】移动数据----infile *
要求: ①指定bad文件: ②挂在之前将目标表delete: ③导入的的数据在控制文件中. 1.创建目录对象: :: SYS@ORA11GR2>create or replace directo ...
- 通过案例对 spark streaming 透彻理解三板斧之三:spark streaming运行机制与架构
本期内容: 1. Spark Streaming Job架构与运行机制 2. Spark Streaming 容错架构与运行机制 事实上时间是不存在的,是由人的感官系统感觉时间的存在而已,是一种虚幻的 ...