Hibernate基础教程:使用from子句操作数据表

需积分: 9 1 下载量 177 浏览量 更新于2024-08-23 收藏 2.51MB PPT 举报
"这篇教程介绍了Hibernate中的基础概念和用法,特别是如何使用from子句进行查询操作,并讨论了newInstance()方法与new关键字的区别以及Java事务API(JTA)的相关知识。" 在Hibernate框架中,from子句是进行对象关系映射(ORM)查询的基本组成部分,用于指定需要查询的数据表。例如,`from Person` 表示要从Person持久化类对应的数据库表中选取所有记录。为了提高代码可读性,通常会为查询结果的实例指定别名,如`from Person as p`,这在实际编写HQL(Hibernate Query Language)时非常常见。 关于newInstance()方法和new关键字的差异,newInstance()是Java反射API的一部分,它需要类已经被加载并且连接完成。而new关键字则是在运行时动态创建对象,此时类是否已被加载并不强制要求。newInstance()依赖于Class类的forName()方法来确保类加载和连接,这使得程序具有更好的灵活性和动态性,可以在运行时根据需要加载和实例化类。 Java事务API(JTA)是Java平台上的标准事务管理接口,它允许应用程序在分布式环境中管理事务。在Hibernate中,不同的方法对应着对象的不同状态转换。比如,游离状态的对象可以使用save()、persist()或saveOrUpdate()方法变为持久化状态,而delete()方法将持久化对象变为游离状态。get()或load()方法返回的实例默认是持久化状态。更新游离状态的实例通常使用update()、saveOrUpdate()、lock()或replicate()方法。每个方法对应的SQL操作不同,如save()和persist()会触发INSERT,delete()触发DELETE,update()或merge()触发UPDATE。 在查询方面,HQL提供了灵活的查询构造方式,例如,`select this_.idasid0_0_,this_.nameasname0_0_,this_.ageasage0_0_,this_.sexassex0_0_ from Person this_ where (this_.name=? and this_.sex=?)` 是一个带有参数的HQL查询,可以根据条件筛选Person表中的数据。而`List objs = (List) session.createSQLQuery("SELECT * FROM Person").list();` 是一个直接执行的SQL查询,不涉及HQL,它将返回Person表的所有记录。 最后,`Object[] o = (Object[]) objs.get(0);` 这行代码表示获取查询结果的第一个元素,并将其转换为Object数组,通常用于处理查询结果并进一步处理或显示。 这篇教程涵盖了Hibernate的基础查询语法、对象状态管理以及Java事务处理,对于理解Hibernate的工作原理和使用方法具有指导意义。