框架之Hibernate 基本概念
来源:互联网 发布:路由器mac地址会变吗 编辑:程序博客网 时间:2024/04/28 20:54
一、简介:
1.
Hibernate是数据持久层的一个轻量级框架。数据持久层的框架有很多比如:iBATIS,myBatis,Nhibernate,Siena等等。并且Hibernate是一个开源的orm(Object relations mapping)框架,提供了查询获取数据的方法,用面向对象的思想来操作数据库,节省了我们开发处理数据的时间。
2.优点:
1)、使用简介的hql语句(Hibernate query language)。可以不使用传统的insert,update等sql语句。比如insert一个对象,原来的做法是:insert into 表名称 alue(值1,值2,值3,……),而现在的做法是:save(对象)。
2)、使用orm映射。对象到关系数据库之间的映射。是从对象的角度操作数据库,再次体现了面向对象思想。原来的实体抽取方法:首先有了表,然后表映射实体对象。而现在Hibernate做法是:直接由对象映射到表。
3)、没有侵入性,移植性比较好。什么是没有侵入性?就是Hibernate采用了pojo对象。所谓的pojo对象就是没有继承Hibernate类或实现Hibernate接口。这样的话,此类就是一个普通的java类,所以移植性比较好。
4)、支持透明持久化。透明是针对上层而言的。三层架构的理念是上层对下层的依赖,只是依赖接口不依赖具体实现。而Hibernate中的透明是指对业务逻辑层提供了一个接口session,而其他的都封装隐藏。持久化是指把内存中的数据存放到磁盘上的文件中。
3.Hibernate中5个核心接口1)、Configuration接口:负责配置及启动Hibernate,用来创建sessionFactory
2)、SessionFactory接口:一个SessionFactory对应一个数据源存储,也就是一个数据库对应一个SessionFactory。SessionFactory用来创建Session对象。并且SessionFactory是线程安全的,可以由多个线程访问SessionFactory共享。
3)、Session接口:这个接口是Hibernate中常用的接口,主要用于对数据的操作(增删改查)。而这个Session对象不是线程安全的。不能共享。
4)、Query接口:用于数据库的查询对象。
5)、Transaction接口:Hibernate事务接口。它封装了底层的事务操作,比如JTA(;java transcation architecture)所有的数据操作,比如增删改查都写在事务中。
二、从三个角度理解理解hibernate1.hibernate是对jdbc进一步封装
原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,所以出现了Hibernate把JDBC封装了一下,我们不用操作数据,直接操作它就行了。
2.从分层角度
我们知道非常典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。
3.hibernate是开源的一个orm(对象关系映射)框架
ORM,即Object-Relational Mapping,作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。
hibernate核心:
ps:此概念来自于极客之家
- 框架之Hibernate 基本概念
- Hibernate学习笔记之基本概念
- 认识应用框架之基本概念
- J2EE框架之Hibernate
- Hibernate框架之SQLQuery
- 框架之Hibernate(一)
- 框架之Hibernate(二)
- Hibernate框架之缓存
- JAVA框架之hibernate
- hibernate基本概念
- Hibernate基本概念
- Hibernate基本概念
- Hibernate基本概念
- Hibernate基本概念
- Hibernate 基本概念
- Hibernate基本概念
- 软件自动化测试框架图之基本概念
- Android框架学习之RxJava(一)基本概念
- 【JZOJ3807】地砖铺设
- javascript函数小应用
- php中heredoc与nowdoc的使用方法
- [C++][线程池][完整实现] 转:线程池原理及创建(C++实现)
- 写在2017
- 框架之Hibernate 基本概念
- 单元测试中,@Requestbody参数的获取
- .css('height')和.height的区别
- 解决Python3下打印utf-8字符串出现UnicodeEncodeError的问题
- ECharts堆叠区域图重叠显示
- pyinstaller 遇到no module named ""
- error:Scheme.DRAWABLE.wrap加载不出图片
- 正则表达式(转载)
- 建立VNCserver,远程连CentOS7失败