hibernate是什么框架?hibernate对象三种状态是什么?

阳光 2022-01-11 15:54:50 java常见问答 5075

我们知道java开发框架有很多,而程序员之开发过程中也需要使用到java框架,这样可以使得开发效率以及质量得到提升,那hibernate是什么框架?下面来我们就来给大家讲解一下hibernate的相关内容。

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JavaEE架构中取代CMP,完成数据持久化的重任。

hibernate对象三种状态是什么?

1、Transient 瞬时 :对象刚new出来,还没设id,设了其他值。

2、Persistent 持久:调用了save()、saveOrUpdate(),就变成Persistent,有id

3、Detached 脱管 : 当session close()完之后,变成Detached。

hibernate是什么框架?hibernate对象三种状态是什么?.jpg

例子程序:

Teacher类:

View Code

测试类:

View Code

代码详细解读,内存分析:

1、当Theacher t = new Teacher(); t.setXXX后,此时的t是没有id的,只是在内存中有了一个Teacher对象t。此时状态就是transient。

2、当执行Session session = sf.getCurrentSession();内存中会有一个Session对象,session对象里有一个hashmap,他其实就是缓存:内存中的一块区域,放着一系列想要的提高读取效率的对象(的引用)。这个HashMap的key,是用来保存将要持久化的对象的id,value保存我们的对象,在这里就是t,其实是保存对象的引用,指向t对象。这都是准备工作,没有调用save方法,里边什么都没有。当执行了session.save(t);就在session的缓存里就有了t对象,key里有了id 1,value指向t对象。调用save方法的同时,会发出insert语句,在数据里也就有了t对象。

所以save完之后,内存里有t对象,数据库里也有t对象,称为persistent状态。

这样做的好处是:

提高效率,如果要找id=1的对象,直接从内存里去查,而不用去数据库里找。

3、当执行了session.getTransaction().commit();session自动关了,session对象没有了,缓存也没了。看图可知,此时t对象在内存中还有,只是HashMap指向t没了。t对象已经脱离了session的管理,称为detached 脱管状态。

1.png

其实hibernate对象三种状态的区分关键在于有没有id,id在数据库中有没有以及在内存中有没有session缓存,知道了这些我们就好区分了!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

java主函数如何定义?java主函数怎么应用?

json数组数据格式怎么操作?json数组如何应用?

java写计算器代码是什么?java写代码用什么软件?