分享

Hibernate?Reverse?Engineering?向导

 ylzrx 2012-03-15
MyEclipse Hibernate 快速入门中文版

MyEclipse Hibernate 快速入门中文版

Hibernate Reverse Engineering 向导

Java src folder 选中映射文件, POJO 和 DAO 生成后所在的项目和源码文件夹.
Java package 映射文件, POJO 和 DAO 生成后所在的包.
Hibernate mapping file 从选中的表格生成映射文件.
Update hibernate configuration 将生成后的映射文件添加到 Hibernate 配置文件中.
Java Data Object 为映射文件和表格生成对应的数据对象 (POJO).

Create abstract class 为每个数据对象生成一个抽象的父类. 这个抽象类将在以后的重新生成过程中覆盖掉, 但是对应的子类将不会被覆盖掉.
Base persistence class 如果需要的话, 输入生成的 POJO 所要集成的父类的完整名称.
Java Data Access Object 生成便于访问映射后的类和表格的数据访问对象. 用户可以在 Basic, Spring 和 JNDI DAO 中选择一种.
Generate precise findBy methods 为映射类中的每个属性生成一个 "findBy" 方法. 例如 findByFirstName("name");
Use custom templates 覆盖 MyEclipse 的内部 velocity 模版为你自己的版本.参考使用模版来更好的调节生成的代码 来获取更多信息.
Template directory 包含了自定义模版的目录树的根节点.

图 14.  Hibernate Reverse Engineering 向导 - 第 2 页
第 2 页可以使用默认的设置, 选择 Next.
表 5 - Hibernate Reverse Engineering 向导 - 第 2 页

Rev-eng settings file 这个文件包含了反向工程的配置和选项以供以后使用. 点击 Setup... 按钮来选择现有的文件或者创建一个新的文件.如果找不到一个这样的配置文件的话向导将会自动创建此文件.
Custom rev-eng strategy 允许你指定一个自定义的反向工程策略类. 这个类允许你用编程的方式来自定义反向工程处理过程的各个方面. 参考 使用自定义反向工程策略 来获取详细信息.
Type Mapping 决定是否在类型映射属性中使用 Java 或者 Hibernate 类型, 例如 java.lang.String 对应 string. 这个设置只能在向导第 3 页的 Customized Type Mappings 列表中没有指定更多信息时才能使用.
ID Generator ID Generator 是 Hibernate 映射文件必须有的内容. 它定义了持久类实例的唯一主键生成器 Jaav 类.  参考 资源 部分里面的 Hibernate 文档链接, 里面描述了每个 ID 生成器的详细信息.如果留空或者更详细的配置在这个向导的第 3 页没有配置, Hibernate 映射引擎将自动为你选择一个 ID 生成器.
Generate basic typed composite IDs 如果数据库表格包含有多个列的主键, 将总是使用 <复合主键> 映射.如果这个选项启用并且有对应的多个外键, 每个主键列将依然会被作为'简单的' 标量 (string, long, 等), 而不是引用到一个实体. 将会创建 <many-to-one> 元素, 但是它们将会标记为非可更新和非可插入的字段.如果你禁用这个选项(默认推荐用这种方式), 将会创建 <key-many-to-one> 元素来代替上面的生成内容.
Generate version and timestamp tags 如果启用, 名为 "version" 和 "timestamp" 的列将会在生成的映射文件中作为 <version> 和 <timestamp> 标记出现.
Customized Type Mappings 允许你来指定一个自定义的 JDBC 类型到 Hibernate 类型的转换, 使用 Length, Scale, Precision 和 Nullability 作为精度控制对应原来的 JDBC 类型.

# 再第 3 页页可以使用默认的设置, 选择 Finish 将启动反向工程处理.
图 15.  Hibernate Reverse Engineering 向导 - 第 3 页
表 6 - Hibernate Reverse Engineering 向导 - 第 3 页

Class name 对应当前数据库表格的数据对象类的完整名称.
ID Generator 想要对当前表所使用的 ID 生成器.
JDBC type 对当前列所使用的 JDBC 类型覆盖.
Property name 对应当前列所生成的属性名.
Hibernate type 对应当前列的 Hibernate 类型.
Include referenced / referencing tables 包含反向工程时当前数据库表引用的表格以及其它引用到当前表的数据库表.
Generate support for ListedTable(fk)->UnlistedTable and UnlistedTable(fk)->ListedTable 生成关联到当前表格的关联表的尚未反向工程过的代码, 这些表在当前配置页面尚未被显示.在这个向导完成之后将会进行下面所列的操作:

    *创建类 AbstractEchoMessage . 这个抽象类提供了所需的 Hibernate 兼容的功能例如 public 的读取器和设置器方法, 这些方法对应的持久化属性和 ECHO_MESSAGE 数据库表格中的列相对应.
    *创建了一个 EchoMessage Java 类, 是 AbstractEchoMessage 类的一个具体的子类. EchoMessage 的目的是为了被修改后提供额外的业务和验证逻辑, 并且不会被后续的生成代码过程所覆盖.
    *创建了 EchoMessage.hbm.xml Hibernate 映射描述符. 这个文件指示 Hibernate 如何将 EchoMessage Java 类和 ECHO_MESSAGE 数据库表格中的数据相互映射.
    *在文件 hibernate.cfg.xml 中注册 EchoMessage.hbm.xml 映射描述符.
    *创建了 Java 类 EchoMessageDAO. 这个类提供了对 EchoMessage 数据对象类的方便的访问和操作.
    *创建 IBaseHibernateDAO 接口和 BaseHibernateDAO 类. 这些类对基本的 DAO 来说是必要的, 因为它使用了添加 Hibernate 功能时候所生成的 Session 工厂类(com.genuitec.hibernate.HibernateSessionFactory)来获取 Hibernate 会话.

  图 15 高亮显示了所生成的类, 关键方法和映射文件, 以及被添加到 hibernate.cfg.xml 文件中的对生成的映射文件的引用.
  图 15.  Hibernate 反向工厂向导执行结束后更新过的项目内容

5.5 使用模版调整生成更好的代码
    * e.doc/html/quickstarts/hibernate/myeclipse_templates_5.5GA.zip">这个文件到你的电脑的文件系统上.
    * 按照 README.txt 文件中的说明来自定义这个模版.
    * 调用反向工程向导, 在第 1 页选择启用 Use custom templates 选项, 然后将 Template directory 指向到包含模版树的文件夹e.

5.6 使用自定义反向工程策略
   1. 向你的项目中添加 MyEclipse Persistence Tools 类库.
          * 右键点击你的项目然后选择 Properties.
          * 在 Java Build Path 页面, 在 Libraries 面板下选择 Add Library....
          * 选择 MyEclipse Libraries ,接着选中 MyEclipse Persistence Tools.
          * 点击 Finish.

   图 16.  添加 MyEclipse Persistence Tools 类库
   2. 在你的项目中创建一个新类, 让这个类继承自 org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy 类.
   3. 定义一个单参数的构造器, 然后覆盖其中的感兴趣的一个或者多个方法, 例如, columnToPropertyName.
      这里是一个例子, 将在所有生成的属性前添加一个 "ME_" 前缀.

      MyStrategy.java

      package  com.genuitec.hibernate;
      import  org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
      import  org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
      import  org.hibernate.cfg.reveng.TableIdentifier;
      public class MyStrategy extends DelegatingReverseEngineeringStrategy {
          public MyStrategy(ReverseEngineeringStrategy strategy) {
            super (strategy);
          }
          public String columnToPropertyName(TableIdentifier table, String columnName) {
                  return "ME_" + super.columnToPropertyName(table, columnName);
          }
      }

      图 17. MyStrategy.java 源代码清单
   4. 在反向工程向导的第 2 页, 选中刚才所创建的类
      图 18.  指定反向工程策略

5.7 编辑映射文件
MyEclipse 包含了定制过的 XML 编辑器来专门用于修改 Hibernate 映射文件 (*.hbm.xml). 当双击映射文件的时候编辑器将会自动打开. 你也可以通过右键点击文件然后选择 Open With > MyEclipse Hibernate Mapping Editor.功能

    * 超链接浏览到引用到的类和属性.
    * 类名自动完成提示.
    * 属性名自动完成提示.
    * 映射文件元素, 属性和值的内容完成提示.

      图 19.  Hibernate 映射文件编辑器

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多