- 浏览: 42944 次
文章分类
最新评论
MyEclipse Hibernate 映射表配置文件详解
5.4创建 Hibernate Java 表映射
这个部分展示了使用 MyEclipse Hibernate工具来反向工程生成 Java 数据对象并从现有的数据库表格生成映射的过程.
注意: 在我们的例子里我们使用了 TEST 数据库下的 ECHO_MESSAGE 表格; 对于其它数据库和表格的操作过程基本上都是一样的.
另外, 你也可以从 DB Browser 那里拖动表格, 然后将它放到 Hibernate 配置编辑器里也可以启动这个向导.
注意: 你可以在 DB Browser 中选中多个表格然后同时对它们进行反向工程.
图 12. 对 ECHO_MESSAGE 数据库表格启动 Hibernate Reverse Engineering 向导
Hibernate Reverse Engineering向导一共有 3 页.
图 13. Hibernate Reverse Engineering 向导 - 页面 1
选择 HibernateDemo 项目中的src 文件夹. 点击 Java package输入框右侧的 Browse... 按钮然后选中包 com.genuitec.hibernate完成如图 13 所示的向导中的其余的内容然后选择 Next.
注意: 向导的第 2 页和第 3 页用来自定义反向工程处理过程.
当然也可以现在就直接点击 Finish 按钮开始处理过程, 不对后两页的设置进行任何自定义.
表 4 -Hibernate Reverse Engineering 向导 - 第 1页
选项 | 描述 |
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" 方法. |
Use custom templates |
覆盖 MyEclipse 的内部 velocity 模版为你自己的版本. |
Template directory |
包含了自定义模版的目录树的根节点. |
图 14. Hibernate Reverse Engineering 向导 - 第 2 页
表 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 生成器的详细信息.
|
Generate basic typed composite IDs |
如果数据库表格包含有多个列的主键, 将总是使用 <复合主键> 映射. |
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 |
生成关联到当前表格的关联表的尚未反向工程过的代码, 这些表在当前配置页面尚未被显示. |
在这个向导完成之后将会进行下面所列的操作:
图 15 高亮显示了所生成的类, 关键方法和映射文件, 以及被添加到 hibernate.cfg.xml 文件中的对生成的映射文件的引用.
图 15. Hibernate 反向工厂向导执行结束后更新过的项目内容
—————————————————————————————————————————————————————————————
右键点击你的项目然后选择 Properties.在 Java Build Path 页面, 在 Libraries 面板下选择 Add Library....选择 MyEclipse Libraries ,接着选中 MyEclipse Persistence Tools.点击 Finish.
图 16. 添加 MyEclipse Persistence Tools 类库
在你的项目中创建一个新类, 让这个类继承自 org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy 类.定义一个单参数的构造器, 然后覆盖其中的感兴趣的一个或者多个方法, 例如, columnToPropertyName.
这里是一个例子, 将在所有生成的属性前添加一个 "ME_" 前缀.
MyStrategy.java |
packagecom.genuitec.hibernate; importorg.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy; importorg.hibernate.cfg.reveng.ReverseEngineeringStrategy; importorg.hibernate.cfg.reveng.TableIdentifier; publicclassMyStrategyextendsDelegatingReverseEngineeringStrategy { publicMyStrategy(ReverseEngineeringStrategystrategy){ super(strategy); } publicString columnToPropertyName(TableIdentifier table, String columnName) { return"ME_" + super.columnToPropertyName(table, columnName); } } |
在反向工程向导的第 2 页, 选中刚才所创建的类
图 18. 指定反向工程策略5.7 编辑映射文件
MyEclipse 包含了定制过的 XML 编辑器来专门用于修改 Hibernate映射文件 (*.hbm.xml). 当双击映射文件的时候编辑器将会自动打开. 你也可以通过右键点击文件然后选择
Open With > MyEclipse Hibernate Mapping Editor.
功能
图 19. Hibernate 映射文件编辑器
—————————————————————————————————————————————————————————————
MyEclipse 包含了一个 Hibernate 查询语言编辑器以及几个视图, 允许你根据当前的 Hibernate 配置来执行 HQL 查询语句.
功能
下面的步骤将指导你如何使用 HQL 编辑器右键点击 Package Explorer 中的 HibernateDemo 项目. 在右键菜单中的 MyEclipse 项目下, 选择 Open HQL Editor...
注意: HQL 编辑器也会在你尝试查看后缀为 hql 的文件的时候打开.
图 20. 打开 HQL 编辑器
注意: 总是可以切换到这个视图, 通过选择菜单项 Window > Open Perspective > Other > MyEclipse Hibernate当编辑器打开时, 键入 "from EchoMessage" 点击 Run 图标或者按下 Ctrl + F9 来执行查询语句.
图 21. 在 HSQL 编辑器中执行查询
图 22. Query Parameters 视图
注意: 如果你在 HSQL 编辑器为特定的项目初始化后修改了配置, 映射文件或者数据类, 一定要记得点击嵌入的工具栏上的 Refresh 按钮来让编辑器使用最新的配置信息.
—————————————————————————————————————————————————————————————
既然 Hibernate 持久化功能已经整合进了 HibernateDemo 项目, 接下来的步骤就是对它进行测试. 一种测试 Hibernate 持久化功能的方法是创建一个带 main 方法的 Java 类. 测试类将使用 Hibernate 向导所生成的 Java 对象和 HibernateSessionFactory. 请查看图 18 中所示的 HibernateSessionFactory 类中所生成的两个重要的方法, 在测试代码中将会使用这两个方法.
|
显示了 HibernateSessionFactory 中的两个重要的静态方法. getSession(): 这个方法将会返回一个 Session 变量, 可以用来访问 Hibernate Session 类. 任何时间你想使用 Hibernate 会话的时候你都可以调用这个方法来获取缓存过的这个 Hibernate 会话对象. closeSession():如果一个会话已经启动过, 这个方法就简单的关闭它. |
下面是创建测试类源代码的步骤列表:
图 24. 新建 Java 测试类
HibernateReadTest.java |
packagecom.genuitec.hibernate; importorg.hibernate.HibernateException; publicclassHibernateReadTest{ publicstaticvoidmain(String[]args){ //Step1-CreatetheDAO EchoMessageDAOdao=newEchoMessageDAO(); try{ //Step2-UsefindByIdtoretrievethemessagewithID=1 EchoMessageechoMessage=dao.findById(newLong(1)); System.out.println("Entityretrievalsuccessful,messageis:" +echoMessage.getMsg()); }catch(HibernateExceptione){ System.err.println("Entityretrievalfailed."); e.printStackTrace(); }finally{ try{ dao.getSession().close(); }catch(Exceptione){ //donothing } } } } |
这是, Console 视图将会打开, 如果测试成功的话你将会看到如下面的 图 21所示的输出内容.
注意: 如果你看到了 log4j 警告, 你可以忽略它们即可.
图 26. HibernateReadTest Console 输出
8. 使用示例
HibernateDemo 项目下载 HibernateDemo.zip选择 Import > Existing Projects into Workspace, 选中 Select archive file 选项然后指向下载的 zip 文件. 点击 Finish 来导入到你的 Eclipse 工作台.需要做以下修改来重新配置这个项目和你的开发环境保持一致. 从你的数据库复制 JDBC 驱动 JAR 文件到项目中. 通过右键点击文件然后选择 Build Path > Add to Build Path 来将它添加到项目的构造路径中. 连接到你的数据库然后执行 DDL/DDL.sql 文件中的代码来创建示例数据库并填充里面的值.
在执行之前, 也许需要修改表格的数据库前缀并使它和你的数据库的 DDL 规范一致. 修改配置文件 hibernate.cfg.xml , 将里面的连接设置修改为你自己的数据库配置.还可能需要修改 EchoMessage.hbm.xml 来修改 class 元素里面指定的 schema 属性为对应的数据库名称. 一些其它的文件已经包含在这里:
log4j.properties 用来控制 log4j 类库里面的日志等级.
ehcache.xml 用来控制ehcache 类库.
HibernateWriteTest.java 是一个简单的演示类来展示 DAO 是如何写入数据到数据库的.
—————————————————————————————————————————————————————————————
9. 总结使用 MyEclipse 进行 Hibernate 开发的教程到此结束.我们还有更多的快速入门文档, 包括如何使用 DatabaseExplorer, Struts, JSF, Web Projects, 修改, 应用服务器配置, EJB 开发, 以及企业应用项目. 更多信息请访问 MyEclipseQuickstart library .
—————————————————————————————————————————————————————————————
10. 用户反馈如果你对本文有评论或者建议, 请提交到 MyEclipseDocumentation Forum .
—————————————————————————————————————————————————————————————
11.资源
HibernateDemo 示例项目MyEclipse Reverse-Engineering 模版
相关推荐
- **dtd**: 这可能包含Hibernate的DTD(文档类型定义),例如`hibernate-mapping-3.0.dtd`,它是Hibernate映射文件的语法定义,用于验证映射文件的正确性。 - **lib**: 这个目录可能包含了Hibernate相关的JAR文件...
- 从Database Explorer的表定义中生成Java类和Hibernate映射文件 - 使用HQL编辑器 - 创建使用Hibernate的小测试应用 - **前置条件**:建议先阅读《Database Explorer快速入门》教程,以熟悉如何创建数据库连接和...
- MyEclipse会自动生成`hibernate.cfg.xml`文件以及`SessionFactory`的Java配置文件。 - 用户可以根据需要修改这些配置文件中的属性。 5. **编写实体类与映射文件**: - 实体类对应数据库表中的每一行记录,映射...
### MyEclipse+Hibernate快速入门知识点详解 #### 一、前言 本文档旨在通过一个简单易懂的方式,介绍如何在MyEclipse环境下配置并使用Hibernate框架。这是一份非常适合初学者使用的指南,特别是对于那些希望快速...
### Hibernate自动生成配置文件详解 #### 一、Hibernate与自动生成配置文件的重要性 在Java开发领域,Hibernate作为一款优秀的对象关系映射(Object-Relational Mapping,简称ORM)框架,极大地简化了Java应用与...
### myEclipse 使用 Hibernate 图解知识点详解 #### 一、集成 Hibernate 类库到 MyEclipse 项目 在 MyEclipse 中使用 Hibernate 开发时,首先需要将 Hibernate 的类库加入到项目中。具体步骤如下: 1. **添加 ...
### MyEclipse与Hibernate快速入门知识点详解 #### 一、前言 本篇文章将详细介绍如何使用MyEclipse Enterprise Workbench进行Hibernate开发的基础特征、概念和技术。通过构建一个简单的Java Hibernate应用来逐步...
此配置文件用于指定Hibernate与Oracle数据库之间的连接参数。 ##### 3.4 创建数据库表及对应实体类 1. 在Oracle数据库中创建表`login`: ```sql create table login ( username varchar(50) not null primary ...
本文将详细介绍如何在MyEclipse中设置环境并利用其强大的功能来自动生成Hibernate的相关配置文件(`hibernate.cfg.xml`)、映射文件(`.hbm.xml`)以及Java实体类。通过这一过程,开发人员可以极大地提高开发效率,...
在Hibernate3.1中,我们可以通过XML配置文件或者注解来定义对象与数据库表的映射,从而简化了数据库操作。在登录功能中,通常会用到Hibernate的Session接口来查询或更新用户信息。 在MyEclipse中整合SSH,首先需要...
【MyEclipse+Struts+Hibernate配置开发详解】 在软件开发中,MyEclipse作为一款强大的集成开发环境,常被用于Java EE项目的构建。结合Struts和Hibernate框架,可以实现高效的MVC(Model-View-Controller)架构和...
MyEclipse自动生成的配置文件、持久化类、映射文件以及DAO类,展示了如何使用Hibernate进行数据库操作。配置文件定义了数据库连接信息和映射关系,SessionFactory则是管理Session的中心,它负责创建和回收Session,...
- 从Database Explorer表定义生成Java类和Hibernate映射文件(.hbm)。 - 使用HQL编辑器。 - 开发小规模测试应用。 #### 4. Hibernate简介 - **定义**: Hibernate是一款流行的开源对象-关系映射(ORM)引擎,提供...
这可以通过 IDE(如 MyEclipse)中的相应选项完成,确保选择正确的版本并生成相应的配置文件。 3. **添加 Hibernate 支持**: - 接下来,我们需要添加 Hibernate 支持,选择 Spring 配置文件来生成 Hibernate 配置...