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 ...
随机推荐
- List<T>线性查找和二分查找BinarySearch效率分析
今天因为要用到List的查找功能,所以写了一段测试代码,测试线性查找和二分查找的性能差距,以决定选择哪种查找方式. 线性查找:Contains,Find,IndexOf都是线性查找. 二分查找:Bin ...
- LeetCode Potential Thought Pitfalls
Problem Reason Reference Moving ZeroesSort Colors Corner cases Shortest Word Distance Thought: 2 p ...
- ubuntu14.04 boost动态库找不到 libboost_system.so.1.58.0
error while loading shared libraries: : cannot open shared object file: No such file or directory == ...
- 操作系统中前台进程与后台进程(适用于Linux)
两种进程的主要区别: 1.前台进程用户可以操作,后台进程用户不能操作(除了把它关闭). 2.前台进程不全是由计算机自动控制,后台进程全都是由计算机自动控制. 3.后台进程一般用作系统服务,可以用cro ...
- Eclipse中FindBugs插件的应用
在以前的一个开发现场里,经常会收到客户的代码review指摘. 觉得有点神奇是,给客户的文件是编译后的*.class打成war包,客户那边却能指摘出代码中的缺陷bug,而且精确到代码的某一行. 通过* ...
- linux 文档处理命令
1. 将用户信息数据库文件和组信息数据纵向合并为一个文件/1.txt(覆盖) 2.将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加 3.将/1.txt./2.txt两个文件 ...
- MyEclipse中查询
在当前文件中查询: Ctrl + F 在整个项目中查询: Ctrl + H(选File Search)
- silverlight简单数据绑定3
3种数据绑定模式 OneTime(一次绑定) OneWay(单项绑定) TwoWay(双向绑定) OneTime:仅在数据绑定创建时使用数据源更新目标. 列子: 第一步,创建数据源对象让Person ...
- 29. Populating Next Right Pointers in Each Node && Populating Next Right Pointers in Each Node II
Populating Next Right Pointers in Each Node OJ: https://oj.leetcode.com/problems/populating-next-rig ...
- plsql中文乱码显示问号的解决办法
问题现象: PLSQL执行sql语句,不识别中文,输出的中文标题显示成问号????. 解决办法: 1. 登陆plsql,执行sql语句,输出的中文标题显示成问号????:条件包含中文,则无数据输出: ...