Hibernate入门 1.框架: 概念:框架是一个提供了可重用的公共结构的半成品 主流框架: 1.Struts:最早的JAVA开源框架之一,是MVC设计模式的一个优秀体现,通过采用Java Servlet/JSP技术实现了基于J2EE Web应用的MVC设计模式的应用框架 2.Struts2:核心:WebWork 吸收了Struts1 的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。引入了几个新的框架特性 3.Hibernate:一个优秀的持久化框架,负责简化将对象数据保存到数据库中,或从数据库中读取并封装数据的工作。 4.Spring:一个开源的 轻量级的框架 主要使现有的J2EE技术更容易使用和促进良好的编码习惯,主要作为依赖注入容器和AOP实现并存,提供声明式事务到DAO的支持简化开发的功能。 2.Hibernate介绍和环境搭建 (1)数据持久化 数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。 例如文件的读取,数据的存储都是数据持久化操作。 数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。 (2)Hiebrnate框架和ORM 1.Hibernate 框架:Hibernate是数据持久化工具,是一个开放源代码的对象关系映射框架。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供面向对象的数据访问API。 2.ORM:对象关系映射。一种数据持久化技术。它在对象模型和关系型数据库之间建立起对应关系,并提供了一种机制,通过JavaBean对象去操作数据库表中的数据。 (3)Hibernate的优缺点以及适用场合 Hibernate框架的优点: 1.Hibernate功能强大,是Java应用与关系数据库之间的桥梁,较之JDBC方式操作数据库,代码量大大减少,提高了持久化代码的开发速度,降低了维护成本。 2.Hibernate支持许多面向对象的特性,如组合、继承、多态等,使得开发人员不必在面向业务领域的对象模型和面向数据库的关系数据模型之间来回切换,方便开发人员进行领域驱动的面向对象的设计与开发。 3.可移植性好 4.框架开源免费,可以在需要时研究源代码,改写源代码,进行功能的定制,具有可扩展性。 5.Hibernate适用于大中型项目。 创建持久化类和映射文件 持久化类是指其实例状态需要被Hibernate持久化到数据库的类。 3.使用Hibernate完成持久化操作 Hibernate操作数据库包括7个步骤: 1.读取并解析配置文件 2.读取并解析映射文件,创建SessionFactory对象。 3.打开Session 4.开始一个事务(增删改操作必须,查询操作可选) 5.数据库操作 Session.save(user); 6.结束事务 Tx.commit();//提交事务 tx.Rollback();//回滚事务 7.关闭Session 4.Hibernate中JAVA对象的三种状态 (1)瞬时状态 New创建对象后,对象并没有立刻持久化,并没有与数据库中的数据有任何关联,此时Java对象的状态为瞬时状态。 (2)持久状态 当对象与Session关联,被Session管理时,它就处于持久状态。持久状态的对象拥有数据库标识(数据库中的主键值)。 (3)游离状态 处于持久化状态的对象,脱离与其关联的Session的管理后,对象就处于游离状态。 三种状态之间的转换 1.瞬时状态转换为持久状态:Session的save OR Update() get() OR load() 2.持久状态转换为瞬时状态:Session.Delete() 3.持久状态转换为游离状态:Session.Close() .evict() .clear() 4.游离状态转换为持久状态:重新获取Session session.update() .saveOrUpdate() 5.游离状态转换为瞬时状态:Session.Delete() 5.脏检查及刷新缓存机制 在Hibernate中,状态前后发生变化的对象称为脏数据。 当Session缓存中对象的属性发生变化时,Session不会立即刷新和执行相关SQL语句,而是在特定的时间点才会刷新缓存。多条数据合并为一条数据一起提交SQL,大大减少了访问数据库的次数,从而提高程序的数据访问性能。 (1)当应用程序调用Transaction() 的COMMIT()时,Commit先调用Session的flush(),然后再向数据库提交事务。 (2)当应用程序显式调用Session.flush()时,刷新缓存。 6.更新数据的方法 (1)update():用于对游离状态的对象进行数据库更新操作。 (2)saveOrUpdate(): 对象是瞬时状态 调用 save 游离状态 调用Update (3)Merge():把一个游离状态对象的属性复制到一个持久化对象中, 05——HQL 1.使用HQL查询语句 Hibernate支持三种查询方式:HQL查询 Criteria查询 和 原生SQL 查询 HQL(Hibernate Query Language)查询:HQL查询是一种面向对象的查询语句,没有表和字段的概念,只有类、对象和属性的概念。 Criteria查询:Criteria查询又称为对象查询,采用面向对象的方式构造查询。 原生SQL(Native SQL)查询:原生SQL查询就是直接执行SQL语句,可以在SQL中利用不同数据库所特有的一些特性进行查询。 三者比较: HQL语句查询功能强大,能满足实际开发中的各种查询要求,HQL查询在形式上和SQL查询相似,但是不要被语法结构上的相似所迷惑,HQL查询是完全面向对象的,可以理解继承多态和关联之类的概念。 (1)编写HQL查询语句 1.from 子句 2.Select子句 3.Where 子句 4.使用表达式 5.Order by子句 (2)执行HQL语句 //声明并初始化 //构建Query对象 Query对象构建好之后,执行查询语句,并获取查询结果,有两种方式执行查询: 1.Query.List() 2.Query.iterator() 2.在HQL查询语句中绑定参数 1.参数绑定形式 a) 按参数位置绑定 在HQL查询语句中用“?”占位符来定义参数的位置。 Query query = session.createQuery(“from Emp where job=? And salary>?”); |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )
GMT+8, 2025-4-4 23:47 , Processed in 0.030198 second(s), 16 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.