文档介绍:第16章 Hibernate3实战in MyEclipse
借助Hibernate3框架Java对数据库的开发变的非常容易。用户可以从域建模开始设计,因此可以编写出更加符合面向对象思想的应用程序,对关系型数据的依赖也非常的少。而MyEclipse提供的Hibernate工具使大量的配置工作可以自动或者通过图形界面来完成,丰富的提示免去了初学者的学习坡度,使使用者更容易把精力集中到如何现实业务逻辑方面去,由此提高效率、降低成本。
环境介绍
在Hibernate的官方网站上提供了一组针对Eclipse的Hibernate插件打包称为“Hiberante Tools”,安装起来非常简单。而在MyEclipse中已经自动包含了这个插件而且额外提供了很多实用的功能。
数据库连接工具
MyEclispe提供了一个数据库连接工具,它可以充当数据库的客户端程序使用,可以浏览编辑数据。更有用的是可以连接工具的界面,来反向生成Hibernate需要的持久化类和映射文件。
(1)新建连接。
(2)配置连接参数。
(3)选择Schema信息,缺省选择第一个显示全部的schema。最后单击“Finish”按钮完成配置。
(4)使用DB Browser。
创建Hibernate工程
MyEclipse对Hibernate提供了强有力的支持,包括图形化的配置界面,自动生成配置文件和代码,调试工具等。
(1)右击一个Java工程,在右键菜单中选择MyEclipse|Add Hibernate Capabilities,给这个工程增加Hibernate能力,
(2)生成Hibernate配置文件。
(3)配置数据源。
(4)创建SessionFactory,
(5)hibernate配置文件界面。
(6)添加属性。
(7)添加映射文件。
生成持久化类
MyEclipse提供了从数据库表反向生产Hiberante Java持久化类和映射文件的功能,对开发人员来说省去了很多工作量,不仅如此,MyEclipse甚至可以生成一些业务代码,如DAO类。
DAO是Data Access Object数据访问接口,数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。它是J2EE的一个核心模式。一般情况下把对一个或者是几个相关的数据表的操作,如添加、修改、删除、查询等方法写在一个类中,这个类就是DAO类。一般以表名+DAO来命名它。
HQL编辑器
MyEclipse还提供一个非常有用工具HQL编辑器,用户可以在这个编辑器中调试HQL语句,直接看到执行结果。
在主界面中选择工程,右键菜单MyEclipse|HQL Editor打开HQL编辑器界面,。在编辑器中可以输入所需要调试的HQL语句,点击运行按钮可以在“Hbernate Query Result”窗口中查看到查询结果,这里返回的是Java对象,打印它们的toString()方法。在“Hibernate Dynamic Query Translator”窗口中还可以看到这句HQL最后执行的SQL语句是什么。
代码说明
本实例是对一个最典型的实体“雇员”完整的持久化操作。借助MyEclipse工具自动生成配置文件、持久化类、映射文件和与业务逻辑之间的中间层DAO类。
配置文件
在MyEclipse中Hibernate的配置文件完全可以使用图形化界面来配置,数据库连接为本地的MySQL数据库test。这里引入了两个映射文件Room和Person。
SessionFactory
对Session 进行有效管理的意义,类似JDBC 程序设计中对于JDBC Connection 的调度管理。有效的Session管理机制,是Hibernate应用设计的关键。大多数情况下,Session管理的目标聚焦于通过合理的设计,避免Session的频繁创建和销毁,从而避免大量的内存开销和频繁的JVM垃圾回收,保证系统高效平滑运行。
可以看到,localSession是一个ThreadLocal类型的对象,在doGet 方法中,通过其set 方法将获取的session实例保存,而在doSomething 方法中,通过get 方法取出session实例。
这也就是ThreadLocal的独特之处,它会为每个线程维护一个私有的变量空间。实际上,其实现原理是在JVM 中维护一个Map,这个Map的key 就是当前的线程对象,。,ThreadLocal会根据当前线程对