hibernate入门学习心得

        师傅领进门,修行在个人,无论老师讲的有多么的深刻,最重要的还是得自己掌握相关的知识,在学习hibernate的时候,这点是深有体会的。此文章是为了自己学习中心得所写,也希望能帮助hibernate初级入门的同学。

        之前学习了oracle数据库,以及JDBC的内容,但JDBC无法直接面向对象、开发效率低、代码冗余、重复性工作多等缺点,这就让老师引导了我们学习hibernate,hibernate相对优点是一个开发源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装,简化了JDBC 繁琐的编码。在这几天学习中分别讲述了五章内容,hibernate入门,开发模式与工具,HQL实用技术和HQL查询进阶。

        从入门开始,搭建项目框架,导入hibernate的jar包,官网上有相应的包,配置hibernate的相关配置,也就是主配置和映射文件配置。而主配置分为四个部分配置,第一部分是数据库连接信息,第二部分是hibernate主信息,第三部分是连接池配置,第四部分是注册ORM实体类映射文件。当然,为了其他调用主配置文件时候,我们可以把主配置文件放在源文件下面,并以hibernate.cfg.xml文件命名,这样当其他需要用到主配置文件时候configuration就可以默认,而不用单独在对主配置文件配置位置。

        实体与表的映射,共有三类映射,类与表明,属性和主键,属性和普通字段。除了将实体与表进行映射之外,还要将实体的关联关系与表的关联关系进行映射。主要有many-to-one和many-to-many,当然也有many-to-many,many-to-many我们把它转化为两个many-to-one,这里以自己做学习中做的图书管理的实体为例子。学生和书籍存在多对多的关系,就用相关记录来写成两个多对一,也就是双向多对一。


       当然在配置完成以后,测试是比不可少的。而对数据库操作则分为七个部分,一、获取配置,二、创建sessionFactory,三、获取session,四、开启事务,五、持久化操作,六、提交事务,七、关闭连接。当然在相同的地方,我们没有必要完全重复写,这可以把它重复的地方抽取为一个工具类方便调用。

当完成了上述配置我们就可以具体实现各种接口中的方法连接数据库操作。

       我们还应该明白hibernate的几个重要性的东西。

       Hibernate的五大核心接口,1、configuration(主配置)、2、sessionFactory(创建session的工厂)、3、session(会话接口,拥有对数据持久化操作等,也称为“持久化管理”)、4、transaction(事务的处理)、5、query与criteria(查询接口)。

       Hibernate的实体对象三种状态:1、Transient(瞬时态)刚用new语句创建,还没有被持久化,且不处于Session的缓存中。2、Persistent(持久态)、已经被持久化,且加入到Session的缓存中。3、Detached(游离态或脱管态),已经被持久化,但不再处于Session的缓存中。

       另外,还有就是关于缓存问题,缓存就是为了提高效率和节约资源,有一级缓存和二级缓存,一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据。二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库。

        知道了缓存,我想说的是加载方式也是我们必须理解的地方,我们通常有四个关注点:1关联对象,2关联集合,3对象本身,4对象属性。第一层对象称为主对象,主对象的关联对象和关联集合不是立即加载的,而且延迟加载,需要用到它的时候才会被加载到缓存中。而对象本身,load()方法是延迟加载,get()方法则是立即加载到缓存中。对象属性是立即加载的。如果我们要改变他的加载方式,则可以通过修改相关的配置文件来完成。

       所以在有的时候创建session连接时就不能关闭连接,一级缓存是随着session的消失而消亡的。所以在很多带有返回值方法中,关闭连接就是一个重要的问题,其他方法调用本方法时候,连接一关闭,啥都没有了,更别说返回值了,这时候我们就应该在同一个线程里使用同一个session连接,当一个线程总的结束时候在进行关闭,这就取消了每个方法开一次又关一次的弊端。

       所以学习hibernate,深入理解缓存,理解加载方式,理解对象三大状态无论是初学者还是高手都是非常重要的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值