上一篇:Tip:Eclipse 自动安装和更新组件 >>
用Eclipse Hibernate Synchronizer插件开发Hibernate应用
Hibernate是一个开放源代码的O/R Mapping (对象关系映射框架),它对JDBC进行了轻量级的对象封装,使Java程序员可以使用对象编程思维来操纵数据库。
Hibernate Synchronizer是一个Eclipse插件,可以自动生成*.hbm文件、持久化类和DAOs。了解Hibernate Synchronizer插件的详细信息可以访问:http://www.binamics.com/hibernatesync/ 。
一、Hibernate Synchronizer的功能包括:
l 通过一个向导配置并生成Hibernate Configuration File;
l 通过一个向导同步生成数据库表的*.hbm文件;
l 通过*.hbm文件同步生成Hibernate持久化类和DAOs;
l 提供Hibernate Synchronizer editor编辑*.hbm文件;
l 用一种叫做Velocity的语言定制个性化的代码和资源生成模板(通常没有必要);
二、使用Hibernate Synchronizer插件的步骤:
1、 通过Eclipse的软件更新功能安装插件(Eclipse 3.X的插件更新网址:: http://www.binamics.com/hibernatesync);
2、 配置插件的属性。可以分别在工作台级别和项目级别配置。通常使用默认值。可配置的项目包括:
l 修改并保存hbm时是否自动更新值对象(value object);
l 是否自动生成DAOs或值对象(value object);
l 配置生成DAOs和值对象(value object)时的包名。
3、 通过插件生成Hibernate Configuration File;
4、 通过插件生成*.hbm (Hibernate Mapping File)文件;
5、 必要时用插件提供的Editor编辑*.hbm文件;
6、 通过插件把重新配置Hibernate Configuration File的mapping resource;
7、 通过*.hbm同步生成DAOs和值对象(value object);
三、浅析Hibernate Synchronizer插件生成的代码。
在这个例子中,使用Hibernate Synchronizer插件同步了数据库中的两个表:T_Order和T_User。T_User和T_Order是一对多的关系。
在默认设置的情况下,插件生成的包图如下:
base包中存放插件生成的五个抽象类,在Hibernate Synchronizer“再同步”时会覆盖base包中的类,因此用户不要把客户代码放在base中的类里。换句话说,任何时候不要修改这些类。
dao包中存放的三个类,分别继承自base包中相应的三个类。dao包中的三个类完全是空的实现,客户可以在这里插入自己的代码。采用这样的结构,就把客户代码从插件生成的代码中分离出来,即实现了客户对插件生成代码的定制,又不会在插件“再同步”时影响到客户代码。
在默认设置的情况下,插件生成的类图如下:
左边的六个类是DAOs,右边的四个类是持久类。
所有的DAOs继承自_BaseRootDAO,这个抽象类封装了公共的Hibernate操作方法。抽象类_RootDAO直接继承自_BaseRootDAO,客户可以在这里对_BaseRootDAO进行定制,把公共级别的Hibernate操作放在这里。_BaseRootDAO下级的Base…DAO是持久类的DAO,它仍然是抽象类,目的是让它的子类实现定制的方法。
所有的值对象(value object)都分为两个层次,抽象的基类(如BaseTOrder、BaseTUser)和实现类(TOrder、TUser)。抽象层次包含Hibernate Synchronizer插件生成的持久类,实现层次可以包含客户的定制代码。
四、使用Hibernate Synchronizer插件生成的代码。
在自己的代码中使用Hibernate Synchronizer生成的代码非常简单。
_RootDAO.initialize();
TUserDAO dao = new UserDAO();
TUser user = dao.load("zhangyu");
user.setMail("e-zhangyu@vip.sina.com");
dao.update(user);
_RootDAO.initialize()是必须的。Hibernate Synchronizer生成的持久对象是标准的Hibernate持久对象,包含一组set和get方法。DAOs负责操作持久对象,包括对session和事务管理、load和释放对象、save或update、查询等功能。有了DAOs,客户代码十分简洁。
作者简介:
张昱,可以通过e-zhangyu@vip.sina.com 与作者取得联系。
相关文章:
- · 一个基于JSF技术的简单示例(部分翻译)
- · hibernate原生sql查询(2.1.6)
- · 让Hibern8IDE支持中文(2.1.2)
- · 获得hibernate的sql语句(2.1.6)
- · 在查询页面中显示进度条,在数据load成功后隐去进度条
- · 一个stmt多个rs进行操作引起的ResultSet已经关闭错误
- · Eclipse + EclipseMe 下载与安装
- · Eclipse快速上手Hibernate--3. 利用XDoclet开发
- · 每个初学者都应该搞懂的问题!
- · 浅谈 Java 中 this 的使用
- · 使用内部和匿名类优化Java代码
- · hibernate连接sqlserver2000问题的解决(父子关系同时保存时发生 one-to-many & many-to-one)
- · 符合oo惯例的表现层控制 [曹晓钢]
- · [学习笔记]Thinking in Java (the 2nd edition) Study Note (4)
- · 从零开始学 Java (一) Hello World 左光 2005.4
- · TIJ阅读笔记(第十三章)
- · Java中new DerivedClass()时背后发生的事情
- · JSR 271, Mobile Information Device Profile 3 START!
- · J2ME学习——从模拟器到真机
- · J2ME学习——从WTK到厂商SDK
- · JSP实现树型组织架构(6)--包含文件connectinDB.jsp & orgConnInclude.jsp
- · Learn Spring in spring(四)
- · 使用JDBC创建数据库访问程序
- · 分页显示从数据库中读出的记录
- · 编程必备经典:Java常见问题集锦
- · Oracle & JSP 开发的小型信息管理系统 (七) 源代码5
- · Java Servlet Programming 读书笔记 - servlet生命周期
- · 用Swing作一个日历控制程序
- · 用Swing的Jtable类让数据看起来更干净
- · java虚拟机学习笔记
- · 详解J2EE的13种核心技术
- · Eclipse平台入门:开发环境与实例
- · 十分钟学习WEBGLOGIC6.1
- · 用数据库JDBC连接写法
- · Eclipse 3.0 上配置JSP开发环境
- · 仔细触摸Java编程中的“文档”和“包”
- · 利用Java Reflection(反射)原理,在hibernate里面实现对单表、视图的动态组合查询
- · BEA调整战略再次突围
