hibernate学习笔记



一、对象持久化:把对象的信息保存到数据库或者文件。

二、orm是什么?
    对象关系映射(Object Relation Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。
   
    示意图:
     

三、hibernate框架图
   

四、Configuration类
    1、负责管理hibernate的配置信息;
    2、读取hibernate.cfg.xml;
    3、加载hibernate.cfg.xml配置文件中配置的驱动,url,用户名,密码,连接池;
    4、管理*.hbm.xml对象关系文件。
   
  示意代码:
       Configuration cf = new Configuration().configure();

五、对象关系映射文件(*.hbm.xml):
    1、该文件主要作用是建立表和类的映射关系,是不可或缺的重要文件。
    2、一般放在其映射的类的同一个目录下,但不是必须的。
    3、命名方式一般是“类名.hbm.xml”,但不是必须的。
  
  示意图:
      

六、SessionFactory(会话工厂)接口
    1、缓存sql语句和某些数据;
    2、在应用程序初始化的时候创建,是一个重要级的类(吃内存),一般用单列模式保证一个应用中只需要一个SessionFactory
  实例;
    3、如果某个应用访问多个数据库,则要创建多个会话工厂实例,一般是一个数据库一个会话工厂实例;
    4、通过SessionFactory接口可以获得Session(会话)实例。 
    注意:在使用hibernate开发项目时一定要保证只有一个SessionFactory(一种数据库对应一个SessionFactory)。   

  示意代码:
      Configuration cf = new Configuration().configure();
      SessionFactory sf = cf.buildSessionFactory();

  讨论SessionFactory获取Session的两个方法openSession()和getCurrentSession():
      1、openSession()是获取一个新的session;
      2、getCurrentSession()是获取和当前线程绑定的session,换言之,在同一个线程中,我们获得的session是同一session,
    这样可以利于事务控制。如果希望使用getCurrentSession需要配置hibernate.cfg.xml,配置如下:
            <property name="current_session_context_class">thread</property>
      3、通过getCurrentSession()获取的session在事务提交后会自动关闭,通过openSession()获取的session则必须手动关闭,
    但是我们建议不管什么形式获取的session都要手动关闭;
      4、如果是通过getCurrentSession()获取session进行查询需要事务提交(本地事务:针对一个数据库的事务;全局事务:跨
    数据库的事务(jta))。

      何为同一个线程(示意图)?
          

      如何选择:
          1、如果需要在同一个线程中保证使用同一个Session,则使用getCurrentSession;
          2、如果在一个线程中需要使用不同的Session,则使用openSession()。

七、Session(会话)接口:
    1、Session一个实例代表与数据库的一次操作(当然一次操作可以是crud组合);
    2、Session实例通过SessionFactory获取,用完需要关闭;
    3、Session是线程不同步的(不安全),因此要保证在同一线程中使用,可以用getCurrentSession()获取;
    4、Session可以看做是持久化管理器,它是与持久化操作相关的接口。

  示意代码:
      Configuration cf = new Configuration().configure();
      SessionFactory sf = cf.buildSessionFactory();
      Session s = sf.getCurrentSession();      //或者是:Session s = sf.openSession(); 

  Session的几个重要方法:
      保存一个对象(记录)--save方法
      删除一个对象(记录)--delete方法
      查询一个对象(记录)--get/load方法
      修改一个对象(记录)--update方法

  Session和SessionFactory的关系图:
     

  get()和load()的区别:
      1、如果查询不到数据,get()会返回null,但是不会报错,load()如果查询不到数据,则报错ObjectNotFoundException。
      2、使用get去查询数据,会立即向db发出查询请求(select ...),如果使用的是load()查询数据,即使查询到对象,返回的是
   一个代理对象,如果后面没有使用查询结果,它不会真的向db发出select,当程序员使用查询结果的时候才真的发出select,这
   个现象我们称之为懒加载(lazy),通过修改配置文件,我们可以取消懒加载:
            <class name="Employee" lazy="false" table="employee">

      使用原则:如果确定db中有这个对象就用load(),不确定就用get()(这样效率高)。

八、HQL详解:
    1、HQL中查询的是对象而不是表;
    2、hibernate设计者推荐我们在设计表的时候应当每张表有一个主键,而且该主键最好不含业务逻辑;
    3、在讲解jdbc我们增加说过,要查询什么字段就查询什么字段,不要select * from ...,但是在hibernate我们其实不遵循这个规则,建议我们把整个对象的属性都查询。

九、hibernate对象的三张状态:
    瞬时态(Transient):没有session管理,同时数据库没有对应记录。
    持久态(Persistent):有session管理,同时数据库没有对应记录。
    托管/游离态(Detached):没有session管理,但是在数据库中有记录。

  示意图:
   
 
  作用:只有当hibernate对象处于持久态(Persistent)时对其操作,数据库中的数据才会被更新。




------------------------------------纸上得来终觉浅,绝知此事要躬行。

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值