• hibernate学习


    持久化类:Hibernate是持久层的ORM(Object Relational Mapping:对象关系映射)映射框架,专注于数据的持久化工作。所谓的持久化,就是将内存中的数据永久存储到关系型数据库中。持久化类指的是一个java类与数据库表建立了映射关系。

    持久化类编写规则:1.需要提供无参数的构造方法。2.持久化类的属性私有,对私有的属性提供公有的get和set方法。3.持久化类的属性要尽量使用包装类的类型。4.持久化类要有一个唯一标示OID与表的主键对应。5.持久化类尽量不要使用final进行修饰。

    持久化对象的三种状态:1.瞬时态(transient)瞬时态也称为临时态或者自由态,瞬时态的实例是有new命令创建、开辟内存空间的对象,不存在持久化标示OID,尚未与hibernate session关联,在数据库中也没有记录失去后被JVM Java Virtual Machine(Java虚拟机)回收。对象在内存中是孤立存在,与数据无任何联系,仅仅是信息携带的载体。2.持久态(persistent)存在持久化标示OID,加入到session缓存中,并且相关联的session没有关闭,在数据库中有对应的记录,每条记录只对应唯一的持久化对象,是在事务还未提交前变成持久态的。3.托管态(detached)托管态也称离线窗台或者游离态,当某个持久化状态的实例与session的关联被关闭时就变成了托管态。托管态对象存在持久化标识OID,并且仍然与数据库中的数据存在关联,只是失去了与当前session的关联,脱管状态对象发生改变时hibernate不能检测到。

    状态的转变:

    hibernate的一级缓存:session缓存,session缓存是一块内存空间,用来存放相互管理的java对象,在使用hibernate查询对象的时候,首先会使用对象属性的OID值在hibernate的一级缓存中进行查找,如果找到匹配OID值的对象,就直接将对象从一级缓存中取出使用,不会在查询数据库;如果没有找到相同OID的对象,则去数据库中查找响应找相应数据。当从数据库中查询到所需数据时,该信息也会放置到一级缓存中。Hibernate的一级缓存的作用就是减少对数据库的访问次数。

    hibernate检索方式:主要有5种:1.对象图导航检索:根据已经加载的对象,导航到他的关联对象。它利用类与类之间的关系来检索对象。譬如要查找一个联系人对应的客户,就可以由联系人对象自动导航找到联系人所属的客户对象。2.OID检索方式:OID检索方式主要指用session的get()和load()方法加载某条记录对应的对象。如下面两种加载客户对象的方式,就是OID检索方式3.HQL检索:hibernate query language是面向对象的查询语言,它和SQL查询语言有些相似,但它使用的是类、对象和属性的概念,而没有表和字段的概念。在hibernate提供的各种检索方式中,HQL是官方推荐的查询语言,也是使用最广泛的一种检索方式。它具有如下功能。

    5.QBC检索(Query By Criteria)是hibernate提供的另一种检索对象的方式,它主要Criteria接口、Criterion接口和Expression类组成。Criteria接口是HibernateAPI中的一个查询接口,它需要有session进行创建。criterion是criteria的查询条件,在criteria中提供了add(Criterion criterion)方法来添加查询条件。

  • 相关阅读:
    Javascript异步编程之回调函数
    重绘(redraw或repaint)和 重排(reflow)
    前端性能优化之重排和重绘
    关于options请求的一点理解
    跨域中option请求详解
    手写call、apply、bind函数
    CSS3疑难问题---7、实现元素水平垂直居中
    CSS3疑难问题---8、纯css实现三角形
    【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析
    ListView为什么用setOnItemClick这个方法和onTouch这个方法有冲突
  • 原文地址:https://www.cnblogs.com/myywsy/p/9035930.html
Copyright © 2020-2023  润新知