一、hibernate中的实体规则

    1.实体类创建的注意事项

            1.持久化类提供无参数构造
            2.成员变量私有,提供共有get/set方法访问.需提供属性
            3.持久化类中的属性,应尽量使用包装类型
            4.持久化类需要提供oid.与数据库中的主键列对应
            5.不要用final修饰class
                    hibernate使用cglib代理生成代理对象.代理对象是继承被代理对象.如果被final修饰.将无法生成代理.

    2.主键类型

            1.自然主键(少见)
                    表的业务列中,有某业务列符合,必须有,并且不重复的特征时,该列可以作为主键使用.
            2.代理主键(常见)
                    表的业务列中,没有某业务列符合,必须有,并且不重复的特征时,创建一个没有业务意义的列作为主键

    3主键生成策略

            1.代理主键
                    identity : 主键自增.由数据库来维护主键值.录入时不需要指定主键.
            2.自然主键
                    assigned:自然主键生成策略. hibernate不会管理主键值.由开发人员自己录入.

二、hibernate中的对象状态

    1.对象分为三种状态

           1.瞬时状态
                    没有id,没有在session缓存中
           2.持久化状态
                    有id,在session缓存中
           3.游离|托管状态
                    有id,没有在session缓存中

    2.三种状态的转换图

        Hibernate知识详解二

三、hibernate进阶-一级缓存

        1.缓存:提高效率.hibernate中的一级缓存也是为了提高操作数据库的效率.

        2.提高效率手段1:提高查询效率

Hibernate知识详解二

        3.提高效率手段2:减少不必要的修改语句发送

Hibernate知识详解二

四、hibernate中的事务

        1.事务

                    1.事务特性
                            a 原子性
                            c 一致性
                            i 隔离性
                            d 持久性
                    2.事务并发问题
                            1.脏读
                            2.不可重复度
                            3.幻|虚读
                    3.事务的隔离级别
                            读未提交- 123
                            读已提交 - 23
                            可重复读(mysql默认级别)-3
                            串行化 - 没有问题

        2.知识点:如何在hibernate中指定数据库的隔离级别

Hibernate知识详解二

        3.知识点2:在项目中如何管理事务

                    1.业务开始之前打开事务,业务执行之后提交事务. 执行过程中出现异常.回滚事务. 
                    2.在dao层操作数据库需要用到session对象.在service控制事务也是使用session对象完成. 我们要确保dao层和service层使用的使用同一个session对象   
                    3.在hibernate中,确保使用同一个session的问题,hibernate已经帮我们解决了. 我们开发人员只需要调用sf.getCurrentSession()方法即可获得与当前线程绑定的session对象
                    注意1: 调用getCurrentSession方法必须配合主配置中的一段配置  
                            Hibernate知识详解二
                    注意2:通过getCurrentSession方法获得的session对象.当事务提交时,session会自动关闭.不要手动调用close关闭.            

                    crm项目中
                                                                    Service层
                    Hibernate知识详解二
                                                            Dao层
                    Hibernate知识详解二

五、hibernate中的批量查询(概述)

         1.HQL查询-hibernate Query Language(多表查询,但不复杂时使用) 

                    1.Hibernate独家查询语言,属于面向对象的查询语言
                    1.基本查询
                    Hibernate知识详解二
                    Hibernate知识详解二
                    2.条件查询
                            ?号占位符
                            Hibernate知识详解二
                            命名占位符
                 Hibernate知识详解二
                    4.分页查询
                    Hibernate知识详解二
        2.Criteria查询(单表条件查询)
                    1.Hibernate自创的无语句面向对象查询
                    2.基本查询
                    Hibernate知识详解二
                   3.条件查询
                    Hibernate知识详解二
                    Hibernate知识详解二
                    4.分页 查询
                    Hibernate知识详解二
                    5.设置查询总记录数
                    Hibernate知识详解二

        3.原生SQL查询(复杂的业务查询)

                    1.基本查询
                            1.返回数组List
                            Hibernate知识详解二
                            2.返回对象List
                            Hibernate知识详解二
                            3.条件查询
                            Hibernate知识详解二
                            4.分页查询
                            Hibernate知识详解二

相关文章:

  • 2021-06-27
  • 2021-08-24
  • 2022-01-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-30
  • 2021-10-20
猜你喜欢
  • 2021-12-10
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2021-08-06
相关资源
相似解决方案