`

使用 Eclipse Dali 开发 OpenJPA 应用

 
阅读更多

简介: JPA(Java Persistence API)是 EJB 3.0 新引入的数据持久化编程模型。JPA 充分利用了注释(Annotation)和对象 / 关系映射,为数据持久化提供了更简单、易用的编程方式。OpenJPA 是 Apache 组织提供的 JPA 标准实现。本文是 使用 Apache OpenJPA 开发 EJB 3.0 应用系列 的第七部分,主要讲述了如何下载、安装 Eclipse Dali JPA 工具以及使用提供的向导、透视图、视图快速开发 OpenJPA 应用的详细步骤。

查看本系列更多内容

发布日期: 2007 年 10 月 24 日
级别: 中级
访问情况 : 3995 次浏览
评论: 0 (查看 | 添加评论 - 登录) <!-- Rating_Area_Begin -->

平均分 1 星 共 3 个评分 平均分 (3个评分)
为本文评分

<!-- Rating_Area_End -->

 

<!-- dW_Summary_Area_END --><!-- CONTENT_BODY -->
<!-- MAIN_COLUMN_BEGIN -->
<!-- Related_Searches_Area_And_Overlays_Begin --><!-- MAIN_COLUMN_CONTAINER_BEGIN -->
<!-- MAIN_COLUMN_CONTENT_BEGIN -->

关于 Eclipse Dali JPA 工具

Dali JPA Tools 是由 Eclipse.org 推出、支持 JPA 项目开发的插件,主要目标是为用户开发、编辑 EJB 3.0 中 JPA 实体的映射关系提供可视化工具支持。Dali 是 Eclipse WTP(Web Tools Platform)工具集中的一部分,这是由 Eclipse.org 提供、支持 Web 应用和 Java EE 应用开发的工具集。

目前 Dali 的最新版本是 1.0,它是 WTP 2.0 的一部分,不提供独立下载。Dali 1.0 支持 Eclipse 3.3 版本和 WTP 2.0 版本。本文中所有描述均是针对 Dali 1.0 版本。Dali 还有一个 0.5 版本,它能够支持 Eclipse 3.2 和 WTP 1.5 版本,Dali 0.5 和 1.0 在功能和使用习惯上并没有太大的差异,因此可以作为老版本 Eclipse 和 WTP 用户的一种选择。

Dali 工具集中为用户开发 JPA 应用提供了专门的 JPA 透视图,主要由 Package Explorer、Data Source Explorer、JPA Structure 和 JPA Details 视图组成,Package Explorer 用于管理所有的 JPA 项目,Data Source Explorer 视图用于管理数据库联接,JPA Structure 和 JPA Details 视图是 JPA 透视图最重要的部分,用于管理 Java 对象和数据库之间的映射关系、实体之间的继承、关联关系等以及实体的主键生成策略。


使用 Dali 开发的典型过程

Dali 目前支持从数据库生成实体的开发过程,即开发者首先创建数据库结构,然后使用 Dali 工具提供的向导根据数据库表结构生成实体、并使用透视图和视图调整实体主键生成策略、实体之间继承、关联关系等。这种方式非常适合习惯于在系统开发过程中首先完成数据库设计的开发团队,他们可以基于设计好的数据库结构直接生成实体,然后再来做相关的调整。本文将演示这个开发过程。

在 Dali 中还支持从实体生成数据库表的开发过程,即先使用 Dali 工具创建实体、然后再使用透视图和视图调整实体主键生成策略、实体之间继承、关联关系等内容,最后根据这些实体以及关系生成数据库表结构。不过现在这一功能还不是十分完善,需要等待 Dali 在新版本中提供更多的特性。


工具下载、安装

下载 Dali 工具,可以访问 Eclipse.org 获取下载链接。请读者根据自己的 Eclipse 版本和相应环境选择合适的 Dali 版本下载,Dali 1.0 版本需要 Eclipse 3.3 和 WTP 2.0 的支持,而 Dali 0.5 版本可以使用 Eclipse 3.2 和 WTP 1.5 版本。

要运行 Dali 工具,您还需要下载和安装 JDK 5.0 以上版本,可以访问 Sun 网站 获取 JDK 的最新版本。


开发环境

上面的章节中我们简单介绍了 Dali 的基本信息,下面将会通过一个简单的例子来说明如何使用 Dali 完成 OpenJPA 应用的开发。开发环境使用的操作系统和开发工具如下,如果使用其它的操作系统或者开发工具版本,请根据下面章节中描述的内容进行相应的调整。

  • 操作系统:Windows XP
  • Eclipse 版本号:3.3
  • WTP 版本号:2.0
  • Dali 版本号:1.0
  • 数据库:MySQL 5.0
  • 数据库用户名 / 密码:dali/dali

实例中的业务说明

我们假设实际业务中存在名为 Animal 的对象,在某一个应用场景中,我们需要使用 OpenJPA 框架提供的工具和接口完成 Animal 对象的持久化、属性修改、删除、查找等功能。为了说明的简单,假设 Animal 对象只有两个属性:idname,其中 id 字段代表的是编号(编号由 MySQL 数据库自动生成),name 属性表示名称。我们可以使用下面的 SQL 语句,在 MySQL 数据库中初始化数据库表。


清单 1. 初始化数据库表
                
CREATE TABLE animal (
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(45) NOT NULL,
  PRIMARY KEY (id)
);


使用 Dali 开发 OpenJPA 应用

在本章节中,我们将详细描述如何使用 Dali 来完成上面这个实际业务需求的步骤。

连接数据库

开发 JPA 项目之前,我们需要在工作台中配置到数据库的连接,Dali 工具将会使用我们配置好的数据库连接生成数据库表结构对应的实体。

数据库连接的详细配置过程如下:

  1. 打开 Eclipse 开发环境,切换到 JPA 透视图后,在 Data Source Explorer 视图中的 Databases 节点上右键单击,选择“New…”。

    图 1. 新建数据库连接
    图 1. 新建数据库连接

  2. 在弹出的数据库连接类型选择界面中选择“SQL Model-JDBC Connection”,单击“next”按钮。

    图 2. 选择连接类型
    图 2. 选择连接类型

  3. 在 JDBC 连接基本信息界面中输入如下信息,并且选中“auto-connect when the wizard is finished or when Data Source Expolorer opens”,单击“next”按钮。

    图 3. 输入详细信息
    图 3. 输入详细信息

  4. 在 JDBC 连接信息框中点击“select a driver from the drop-down”后面跟着的“...”按钮,弹出 JDBC 驱动选择框。

    图 4. JDBC 驱动选择框
    图 4. JDBC 驱动选择框

  5. 在 JDBC 选择框中选中“MySQL -> 5.0”节点,单击右边的“Add…”按钮。

    图 5. 选择合适的驱动
    图 5. 选择合适的驱动

  6. 在弹出框中选择“Database -> MySQL -> 5.0 -> MySQL JDBC Driver”,在 Driver Name 后面的文本框中输入“MySQL-JDBC-Driver”,单击“Ok”按钮。

    图 6. 输入驱动名
    图 6. 输入驱动名

  7. 在 JDBC 驱动详细信息中提供 MySQL 驱动 jar 文件,并且在 Properties 区设置访问数据库的 URL、JDBC 驱动类、用户名和密码,单击“Ok”按钮。

    图 7. 提供 MySQL 驱动 jar 文件
    图 7. 提供 MySQL 驱动 jar 文件

  8. 其它界面上均单击“Ok”按钮。

所有动作完成后,Data Source Explorer 视图中将会出现新创建的数据库连接并且已经连接到数据库,如下图所示。


图 8. Data Source Explorer 视图
图 8. Data Source Explorer 视图

创建使用 OpenJPA 的 JPA 项目

数据库连接完成以后,我们就可以开始开发 JPA 应用了。在下面的步骤中,我们将创建 JPA 项目并指定由 OpenJPA 实现。

  1. 通过菜单“File -> New -> Project…”打开项目类型选择框。

    图 9. 项目类型选择框
    图 9. 项目类型选择框

  2. 项目类型选择框中选择“JPA -> JPA Project”,单击“next”按钮。

    图 10. 项目类型选择框
    图 10. 项目类型选择框

  3. 在项目基本信息框中输入项目名称“Dali-demos”,单击“next”按钮。

    图 11. 输入项目名称
    图 11. 输入项目名称

  4. 选中“use implementation library”和“annotated classes must be listed in persistence.xml”,单击“configure default JPA implementation library”,进入 JPA 实现包的配置界面。选中“create orm.xml”。

    图 12. JPA 实现包的配置界面
    图 12. JPA 实现包的配置界面

  5. 单击“configure user libraries”。

    图 13. 定制用户库
    图 13. 定制用户库

  6. 单击“New…”按钮。

    图 14. 新建用户库
    图 14. 新建用户库

  7. 输入“user library name”为“OpenJPA”,选中“System library”。

    图 15. 输入用户库名称
    图 15. 输入用户库名称

  8. 选中新建的 OpenJPA 节点,单击“Edit…”按钮。

    图 16. 编辑用户库
    图 16. 编辑用户库

  9. 将 OpenJPA 安装包目录下的 openjpa*.jar 和 persistence-api-1.0.jar 文件加入到 OpenJPA liberary 中。

    图 17. 添加 OpenJPA 库文件包
    图 17. 添加 OpenJPA 库文件包

  10. 一直单击“OK”按钮,回到 JPA 项目配置界面,在“use implementation library”后面的选择框中选择前面创建的 OpenJPA 实现。

    图 18. 设置 OpenJPA 实现
    图 18. 设置 OpenJPA 实现

  11. 单击“Finish”按钮,完成 JPA 项目的创建。

项目成功创建后,在 Package Explorer 视图中,我们可以看到,系统自动为我们生成了相应的目录和文件。


图 19. 生成的目录和文件
图 19. 生成的目录和文件

从数据库生成实体

通过上面的步骤我们已经创建了合适的 JPA 项目,现在我们需要生成 JPA 中的重要内容 ---- 实体了,Dali 中支持直接从数据库表生成相应的实体,下面是详细的步骤和说明。

  1. 在 Dali-Demos 项目上单击右键,在弹出的上下文菜单中选择“JPA Tools -> Generate Entities”。

    图 20. 生成实体的菜单项
    图 20. 生成实体的菜单项

  2. 选择数据库的 Schema 为“dali”。

    图 21. 选择数据库 Schema
    图 21. 选择数据库 Schema

  3. 输入实体类所在的包“com.levainservice”,然后选择需要生成实体的数据库表。

    图 22. 选择数据库表
    图 22. 选择数据库表

  4. 单击“Finish”按钮就可以完成实体的创建工作。

Dali 将会自动创建实体类 Animal,并且将它们注册到 persistence.xml 文件中。

  • 生成的 Animal 实体类的主体内容如下:
    @Entity
    public class Animal implements Serializable {
        @Id
        private Object id;
        private String name;
    }
    				
  • 修改后的 persistence.xml 文件的内容如下,其中的粗体部分是本步骤中由 Dali 生成的。
    <persistence version="1.0"
        xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
            http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
        <persistence-unit name="Dali-demos">
            <mapping-file>META-INF/orm.xml</mapping-file>
            <class>com.levainservice.Animal</class>
        </persistence-unit>
    </persistence>
    				

调整实体类

通过上面的步骤,我们已经生成了实体,但是,向导生成的实体并不能完全满足要求,我们仍然需要根据实际情况进行调整。演示实例中 Animal 实体类的 id 字段是由数据库自动生成的,我们需要使用 Dali 提供的界面进行调整,调整步骤如下:

进入 JPA 透视图,从左边的的 Package Explorer 视图中双击 Animal.java 打开 Animal 实体类编辑窗口。

  1. Animal 实体的 id 字段从 Object 类型修改为 int 类型;
  2. 在 JPA Structure 视图中选择“id”节点,在 JPA Details 视图中勾中“Primary Key Generation”,在 Strategy 下拉框中选择“Identity”。

    图 23. 调整实体类
    图 23. 调整实体类

至此,我们已经使用 Dali 生成了 OpenJPA 运行所需要的最重要的部分 — 实体,我们可以编写测试代码来访问新创建的实体了,如何编写测试代码来访问新创建的实体请参考本系列文章 第 2 部分:开发第一个 Open JPA 应用 中对应部分的内容。您还可以 下载 本文的示例代码,其中也包括了访问 Animal 实体的代码,可供参考。


总结

Dali 是由 Eclipse.org 提供的开发 JPA 应用的可视化编辑工具,它是 Eclipse 的一个插件,属于 WTP 平台的一部分,使用 Dali 工具可以直接从数据库生成实体,随后开发者可以使用 Dali 提供的 JPA Structure 和 JPA Detail 视图调整实体和数据库的映射关系以及实体之间的关系,使用 Dali 工具也可以由开发者先创建实体类,然后生成创建对应数据库表的 SQL 语句。

本文中作者通过一个简单的例子,详细地说明了使用 Dali 开发 OpenJPA 应用所需要完成的设置工作,同时演示了 Dali 提供的与 JPA 开发相关的向导、透视图、视图生成、调整实体的详细使用过程。

分享到:
评论

相关推荐

    openjpa 源码 下载 帮助开发人员调试

    在实际的调试过程中,你可以使用IDE如IntelliJ IDEA或Eclipse,导入OpenJPA源码工程,设置断点,通过单步执行、查看变量值等方式来追踪代码运行状态,找出问题所在。同时,阅读源码可以帮助你更深入地理解OpenJPA的...

    非容器环境运行OpenJPA应用

    下面将详细介绍如何在不依赖于像Tomcat或JBoss这样的服务器容器的情况下,使用Eclipse IDE来设置和运行OpenJPA应用。 首先,`.classpath`和`.project`文件是Eclipse工程的配置文件。`.classpath`文件定义了项目的类...

    openJpa的应用,感觉还可以

    JPA是Java EE平台中的一个重要组件,用于管理和处理应用程序中的对象-关系映射(ORM),使得开发人员可以使用面向对象的方式来操作数据库。 在“openJpa的应用,感觉还可以”的标题中,我们可以理解到作者对于Open...

    openjpa范例及实例工程

    OpenJPA 框架从数据库中一次性获取 50 个连续的实体标识缓存起来,当下一次应用程序需要获取实体标识时,OpenJPA 将首先检测缓存中是否存在实体标识,如果存在,OpenJPA 将直接使用缓存中的实体标识,如果不存在,...

    OpenJPA 2.2.1 API (CHM格式)

     除了对 JPA 标准的支持之外,OpenJPA 还提供了非常多的特性和工具支持让企业应用开发变得更加简单,减少开发者的工作量,包括允许数据远程传输/离线处理、数据库/对象视图统一工具、使用缓存(Cache)提升企业应用...

    openjpa 写的一个例子

    OpenJPA,全称Open Java Persistence API,是Java平台上的一个开源对象关系映射(ORM)框架,它实现了Java Persistence API(JPA),用于管理Java应用程序中的持久化数据。在这个"openjpademo"示例中,我们将会探讨...

    Spring中使用OpenJPA

    OpenJPA(Java Persistence API)则是Java平台上的一个ORM(对象关系映射)工具,它实现了JSR-317规范,使得开发者可以方便地在Java应用程序中操作数据库。本篇将详细讲解如何在Spring项目中集成并使用OpenJPA。 ...

    Spring和openJPA集成

    Spring和OpenJPA的集成使得开发更加便利,但也有几点需要注意: - **事务边界**:合理设置事务边界,确保业务逻辑的完整性和一致性。 - **性能优化**:合理使用OpenJPA的缓存策略,避免过多的数据库查询。 - **懒...

    jsf、openJpa学习

    **JSF与OpenJPA整合** 涉及到在JSF应用中使用OpenJPA进行数据访问。这通常包括配置OpenJPA的数据源、实体管理器工厂,以及在JSF Managed Beans中注入实体管理器,以便在处理用户请求时执行CRUD操作。JSF的事件驱动...

    Open JPA2 employee 简单例子

    通过这个简单的Open JPA2 employee例子,我们可以看到如何在Java应用中使用OpenJPA2来管理和操作数据库。它展示了JPA的基本概念,包括实体定义、持久化单元配置、以及CRUD操作的实现,对于理解JPA和OpenJPA2的使用...

    openJPA官方手册

    - **文档目的**:此官方手册旨在详细介绍OpenJPA的各种特性和用法,以便帮助开发人员更好地理解和使用该框架。 - **目标读者**:面向对Java持久化感兴趣或正在使用JPA的应用程序开发人员。 #### 三、Java ...

    openjpa jar

    这个版本包含了所有必要的组件,使得开发者可以在他们的应用中轻松地集成和使用OpenJPA。以下是一些关键知识点: 1. **实体管理**:OpenJPA支持定义实体类,这些类代表数据库中的表,通过注解或XML配置文件来描述...

    Spring MVC+OpenJPA框架

    Spring MVC和OpenJPA是Java开发中常用的两个框架,它们分别在Web应用和持久层处理上发挥着重要作用。Spring MVC是Spring框架的一部分,用于构建高效、灵活的Web应用程序,而OpenJPA则是一个实现了Java Persistence ...

    通过 WebSphere Application Server V6.1 利用 OpenJPA

    OpenJPA是一个开源的Java持久层框架,它实现了Java Persistence API(JPA),为开发人员提供了一种在Java应用中管理和存储对象到关系数据库的方法。 首先,我们需要了解JPA。Java Persistence API是Java平台上的一...

    Apache OpenJPA 2.1 User's Guide

    该文档提供了关于 JPA 标准的概述以及如何使用 OpenJPA 的技术细节。OpenJPA 参考指南包含了关于 OpenJPA 各个方面的详尽文档,包括许多高级功能和定制机会。 #### 二、法律条款 文档中提到了一些法律相关的章节,...

    OpenJPA API 文档 chm格式

    OpenJPA API 文档 chm格式

Global site tag (gtag.js) - Google Analytics