什么是hibernate

作者&投稿:海翔 (若有异议请与网页底部的电邮联系)
hibernate什么是session~

Hibernat 对数据库的操作是通过Session来实现的,这里的session不同于页面间传递参数的session,
而是类似于JDBC中的 Connection。Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与session息息相关。
  Session是由HibernateSessionFactory创建的,是线程安全的,可以让多个执行线程同时存取     
HibernateSessionFactory而不会有数据共享的问题,但不能让多个线程共享一个Session。
SessionFactory对象的创建:

Java代码
Configuration cfg = new Configuration().configure();
SessionFactory sessions = cfg.buildSessionFactory();

session创建时使用了一个ThreadLocal类来建立一个Session管理的辅助类,使用ThreadLocal可以有效隔离执行所用的数据,
避开了Session的多线程之间的数据共享问题。

//创建一个线程本地变量。

Java代码
public static final ThreadLocal threadlocal = new ThreadLocal();
public static org.hibernate.SessionFactory sessionFactory;

//获取session的方法
public static Sessin getSession() throws HibernateException{
//返回线程局部变量的当前线程的值
Session s = (Session)threadLocal.get();
//如果sessionFactory为空,重新创建sessionFactory;如果线程为空,就打开一个新的session
if(session==null || !session.isOpen()){
if(sessionFactory == null){
rebuildSessionFactory(); session = (sessionFactory != null) sessionFactory.openSession():null;
// 将hibernate的session放入到线程中保存;只要这个线程不结束,都可以通过线程的get()方法来获取
threadLocal.set(session);return session;

我来简单说下吧!
HIbernate是一种ORM(Object Relation Mapping)就是对象关系映射,Hibernate可以轻松的把数据库中的表映射成我们类描述的对象(一般而言,一张表或者一个视图会对应程序中的一个类),这样在我们连接数据库的时候,可以像访问对象一样简单的访问数据库中的表,如果对对象进行修改,修改的结果Hibernate会自动帮你保存回数据库,你就不用组织SQL语句,和打开关闭数据库那么复杂的操作了。Hibernate提供的查询语句是HQL,是一种面向对象的查询方式,很简单。并且Hibernate会使你的程序与具体的数据库分开(一般情况下,不同的数据库提供的SQL语句是不完全相同的,具有数据库相关性)Hibernate通过方言的形式在配置文档中屏蔽了这种数据库的异构性。
简单说Hibernate方便了程序员对数据库的操作,同时屏蔽了数据库的异构性。
但是Hibernate不适合用于高性能的数据库,如果数据库的数据量大,访问频繁,需要性能优化,用Hibernate很显然不是一个很好的选择。因为通用的、简便的东西,性能肯定不行。

Hibernate开发过程很简单,Hibernate需要您指定一个对象关系映射文件,就是数据库中的哪个表,对应于程序中的那个类,表中的哪些字段对应于程序中类的哪些属性。这样Hibernate才能帮你完成映射。(以前用的是xml配置文档进行映射,现在多使用标注(annotation))。

Spring有两个核心技术,就是AOP面向切面编程,和IOC依赖注入。简单的说AOP就是切面编程,如果您想理解切面编程,您需要具备java设计思想中的代理思想。所谓代理,就是在一个对象中的方法执行前和执行后可以插入些业务处理之外的代码(主要是,日志、异常处理和session控制等)。这样,这些与业务无关的逻辑就可以单独编写,然后插入到那些需要的地方。想进一步了解AOP,请学习java的代理模式(动态代理模式)。IOC是依赖注入,这个是java的创建模式,(如果想深入了解依赖注入,请参考java的工厂模式)。实际Spring就是一个大的工厂,根据用户提供的xml(现在是标记annotation)配置文档,创建用户描述的对象,并完成对象间依赖关系的赋值,这就是IOC思想,如果您不明白,请参考工厂模式(静态工厂模式,工厂模式和抽象工厂模式)。

Struts实际上是MVC中的V就是View显示,M是modle一般由Hibernate提供,C是controller一般由Spring来提供。(我这里专门指SSH框架,别的框架MVC对应的也不同)。Struts的核心思想是过滤器,了解过滤器模式请看(责任链模式)。Struts实际上完成的功能有三个,一个是界面的显示,他提供了一些像html标记一样的标签。然后是过滤,将请求进行过滤,最后是制定请求提交和跳转的方向。

以上是个人观点,不保证权威!

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

扩展资料:

发展历程

2004年,整个Java社区开始从实体bean向Hibernate转移,特别是在Rod Johnson的著作《Expert One-on-One J2EE Development without EJB》出版后,由于这本书以扎实的理论、充分的论据和详实的论述否定了EJB,提出了轻量级敏捷开发理念之后,以Hibernate和Spring为代表的轻量级开源框架开始成为Java世界的主流和事实标准。在2004年Sun领导的J2EE5.0标准制定当中的持久化框架标准正式以Hibernate为蓝本。

2006年,J2EE5.0标准正式发布以后,持久化框架标准Java Persistent API(简称JPA)基本上是参考Hibernate实现的,而Hibernate在3.2版本开始,已经完全兼容JPA标准。

参考资料来源:百度百科-开放源代码

参考资料来源:百度百科-Hibernate



是基于JAVA的轻量级框架,封装了JDBC,是J2EE体系中的持久层框架,主要实现对数据库的CRUD操作

hibernate 是一个对象关系映射框架(ORM),用于对象与关系数据库表记录的转换。

我更惨,一次被问了3个框架,我大概是这样回答的:

hibernate是一个框架,是用来操作数据库的。它把数据库中的表,转换成java类,通过xml文件来实现类和表之间的映射。这样的好处在于,可以面向对象的思想来操作数据库。。。

struts是一个框架,它在网站中起到了控制层的作用。例如表单提交、获取数据、进行一些业务操作等,都是在struts里实现的。。。

spring是一个框架,是用来把struts和hibernate连接在一起的。通过它,可以配置struts中的action要调用哪个业务逻辑层的service类,service类要调用哪个数据操作层的dao类。

基于Java的两大开源框架


...的区别有人能详细说一下吗?我最近用的是ibatis我觉得比hiberna...
ibatis更自由一点,写的是sql语句。而hibernate更彻底一点,可以完全脱离sql方面的,只操作实体就可以完成表操作。

卫星的概述
卫星是环绕一颗行星按闭合轨道做周期性运行的天体。不过,如果两个天体质量相当,它们所形成的系统一般称为双行星系统,而不是一颗行星和一颗天然卫星。通常,两个天体的质量中心都处于行星之内。因此,有天文学家认为冥王星与冥卫一应该归类为双行星,但2005年发现两颗新的冥卫,又使问题复杂起来。月球就...

Hibernagte 公共类问题
你这个函数的功能是利用hibernate向数据库中持久化一条记录,到底向哪张表中插入记录呢? hibernate会通过反射机制判断出你传给save方法的对象的类型 从而持久化相应的实体 不知道你问的是不是这个。。。

关于一个叫earth的乐队
这是他们所有的专辑, 不知道你说的是哪一个, 还有这个乐队的主唱Dylan Carlson是涅磐主唱Kurt Cobain最好的朋友, 但自杀和Carlson没什么关系。(1990) Earth - Self-Titled 7" (Private Pressing)(1991) Extra-Capsular Extraction (Sub Pop)(1993) Earth 2: Special Low-Frequency Version (Sub P...

winter是什么意思
意思是:冬天;冬季。n.冬;冬季;冬天;暮年;衰落期;萧条期;年;岁。comp.冬季的;冬天的。vi.过冬;(家畜)过冬。vt.使过冬。双语例句:1. winter's greyness 冬季的阴沉 2. I am expecting a long, hard winter.我预计冬天会漫长而寒冷。3. The hens stopped laying in winter.这些母鸡...

冬天的英文是什么?
The Lion in Winter冬之狮、冬狮、冬天的狮子;winter sports冬季运动;冬季运动会、冬季活动、冰雪运动;Winter Sonata冬日恋歌、冬季歌、英文名;Aron Winter阿隆·温特;阿温特;Winter Olympic Games冬季奥林匹克运动会、冬奥运。近义词:Hibernate\/overwinter\/brumous\/hibernal.winter的例句:1、It can be...

在冬天用英语怎么说?
“在冬天”的英语是:in winter。我们可以先通过几个双语例句来理解:Swallows migrate south in winter.燕子在冬天迁徙到南方。We go skiing most weekends in winter.我们在冬天的周末大多去滑雪。In winter the nights are long and cold.冬季的夜晚又长又冷。“in winter”包含了2个英语单词,我们...

语法好的进来!
sh代表shape,指表示形状的形容词,如long,short,round, narrow等;a代表age,指表示年龄、时代的形容词,如old,new,young等;c代表colour,指表示颜色的形容词,如red,black, orange等;o代表origin,指表示国籍、地区的形容词,如British,Canadian,German等;补充!!m代表material,指表示材料的形容...

FM2009里的妖人大家推荐几个。 谢谢哈!!
Bernado – Cruseiro – DM Radja Nainggolan – Piacenza – DM, AMRLC Ever Banega – Valencia – DM Frederico Fazio – Sevilla – SW, DC, DM Franco Zuculini – Racing Club – DM, MRC Forwards -10 Bojan – Barca - FC Carlos Vela – Arsenal – AMLC, FC Gio Dos Santos – Tottenham ...

有谁知道西语国家的节日啊?谢谢了~
El gobernador de la colonia proclamó "un día de dar gracias al Señor para que podamos de una manera más especial regocijarnos después de haber recogido el fruto de nuestro trabajo". Esa pacífica convivencia con los nativos duraría pocos años, ya que la masiva afluencia de ...

京山县13495757682: hibernate(开放源代码的对象关系映射框架) - 搜狗百科
须缸美利: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任

京山县13495757682: 什么是Hibernate?
须缸美利: 对于Hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都可以,重要的是大家要知道它的作用.在这里我习惯性称它为框架,它是一种能实现ORM的框架.能实现ORM这个功能的框架有很多,Hibernate可以说是这些框架中最流行、最受开发者关注的,甚至连JBoss公司也把它吸收进来,利用它在自己的项目中实现ORM功能.

京山县13495757682: 简单地说一下什么是Hibernate? -
须缸美利: Hibernate是ORmaping的一种实现 是目前在JAVA界使用非常广泛的ORMapping的一种实现 可以实现关系型数据库和对象之间的映射. 用来开发数据库系统非常方便. 可以将数据库和程序的设计融合在一起 不会在出现以前那样程序是面向对象的,但是一到数据库那里就乱套了的想象.

京山县13495757682: Hibernate是什么意思?
须缸美利: Hibernate ['haibəneit] v. 过冬,冬眠,避寒 词形变化: 名词:hibernation 动词过去式:hibernated 过去分词:hibernated 现在分词:hibernating 第三人称单数:hibernates 例句与用法: Bears wake for spring, summer, and fall and hibernate for ...

京山县13495757682: hibernate是什么?
须缸美利: Hibernate是一种ORM(Object Relation Mapping 对象关系映射)框架,是当前最流行的持久化的手段,由于当前的数据库几乎都是关系性的数据库,所以在进行数据库的CRUD操作时,就会涉及到多表联查,对于大型的应用这是一个相当麻烦的一...

京山县13495757682: hibernate是什么意思 -
须缸美利: hibernate 英[ˈhaɪbəneɪt] 美[ˈhaɪbərneɪt] vi. (某些动物) 冬眠,蛰伏; [例句]Hibernating insects begin to move. 蛰伏的昆虫们开始活动. [其他] 第三人称单数:hibernates 现在分词:hibernating 过去式:hibernated过去分词:hibernated

京山县13495757682: Java开源项目Hibernate意义是什么?
须缸美利: )Hibernate意义 在一个真正的OOAD中,我们的设计首先是做UML建摸,最终将一个系统涉及所有对象(这个东西不是东西那么简单)用类图来体现一个完整的设计,我们...

京山县13495757682: hibernate是什么东西?
须缸美利: 是java的持久层 负责java对象的持久化

京山县13495757682: 什么是Hibernate缓存? -
须缸美利: hibernate 一般用到是一级缓存 也就是 session级别的缓存;二级缓存指的是sessionfactory的缓存;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网