返回介绍

9.4 Spring Roo JPA Repository 示例

发布于 2025-04-22 19:57:20 字数 4377 浏览 0 评论 0 收藏

现在,已经可以构建第一个 Roo 工程了。我们将基于前面章节所看到的相同的领域模型构建一个客户服务应用。我们会创建 Customer 类和关联的 Address 类,将其关联起来并创建 Repository 以及非常基础的数据访问界面。因为 Roo 的 Repository 支持 JPA 和 MongoDB,在这里它借助了 Spring Data Repository 的支持,所以我们会分别为其创建应用。你会看到,它们基本是相同的,但是也有些许的不同,我们会进行重点介绍。让我们先从 JPA 应用开始吧。

9.4.1 创建工程

如果使用 Spring Tool Suite 的话,那么按照之前的介绍创建新的 Spring Roo 工程。在“Create a new Roo Project”对话框界面中,进行以下设置。

  • Project name: roo-spring-data-jpa
  • Top level package name: com.oreilly.springdata.roo
  • Packaging: WAR

如果使用命令行 Roo Shell 的话,需要创建一个名为 roo-spring-data-jpa 的目录,切换到这个新的目录后,可以使用刚刚介绍过的方法启动 Roo shell。在 roo>提示符中,输入如下的命令:

P148a

现在创建完一个新的工程,可以开发应用程序了。从现在开始,不管是通过命令行还是在 Spring Tool Suite 中使用 Roo Shell,所采用的步骤都是一样的。

9.4.2 搭建 JPA 持久化

搭建 JPA 持久化配置包括选择 JPA 供应商以及数据库。在这个例子中使用 Hibernate 以及 HSQLDB。在 roo>提示符中,输入如下的命令:

P148b

需要记住的是,当输入这些命令的时候,可以单击 Tab 键来自动完成并获取可选项的建议。如果使用 Spring Tool Suite 的话,对应的要输入 Ctrl+Space 进行替代。

9.4.3 创建实体

让我们从 Address 类开始创建实体:

P148c

这并不太难。注意我们声明了--activeRecord false,这意味着需要通过 Repository 来提供 CRUD 功能。生成的 Address 类如下所示:

P148d

P149a

我们看到了所声明的私有域以及 3 个 Roo 注解:@RooJavaBean、@RooToString 和 @RooJpaEntity。这些注解都会有对应的 AspectJ 方面的文件,可以在 Java 类的相同目录中找到它们。

接下来,创建 EmailAddress 和 Customer 类。EmailAddress 是嵌入式的类,它具有一个 value 域。我们需要 Roo 忽略一点,那就是对于一些 SQL 数据库来说 value 是保留字。我们也提供了一个列名 email,这样对于查看数据库表的人来说它更具有描述性。通过在域声明的时候使用 embeddable,我们将其指定为嵌入式的域。

P149b

最后的一条命令为 address 表创建了多对多关联,这样我们就能为每个 customer 提供多个 address。以下是所形成的 Customer 类:

P149c

P150a

为了完整起见,我们也给出了 EmailAddress 类:

P150b

这个类最有意思的部分在于 @Embeddable 注解以及定义了 value 属性存储在数据库中的列名为 email。

9.4.4 定义 Repository

实体就绪之后,就可以创建 JPA Repository 了。我们为每个实体分别创建 Repository。

P150c

此时,也可以创建一个服务层,但鉴于这是一个很简单的应用程序,所以这个步骤省略了。

9.4.5 创建 Web 层

现在,需要一些简单的 Web 页面,这样才能够输入和修改 customer 和 address 数据。我们会使用 Roo 生成界面。

P150d

还有一件事情需要去做。对于 EmailAddress 类来说,在 Web 页面上用于展现时,使用的是 String 类型,在持久化的时候使用的是 EmailAddress 类型,Roo 并不知道如何进行匹配。我们需要为 Roo 生成的 ApplicationConversionServiceFactoryBean 添加一个转换器。示例 9-3 展现了如何实现。

示例 9-3 生成的 ApplicationConversionServiceFactoryBean,它添加了转换器

9.4.6 运行示例

现在,可以构建和部署应用了。对于 Spring Tool Suite 来说,只需将应用程序拖曳到 tc server 实例上并启动服务器即可。使用命令行的话,退出 Roo Shell,然后在命令行中运行如下的 Maven 命令:

P152

现在打开一个浏览器并导航到 http://localhost:8080/roo-spring-data-jpa/ ,可以看到如图 9-5 所示的界面。

9-5

图 9-5 JPA 应用程序

我们的应用已经完成了,现在可以添加一些 Address 并且增加一两个 customer 了。

如果每次重启应用服务器都丢失数据让你感到厌烦的话,可以在 src/main/resources/META-INF/persistence.xml 文件中修改模式创建属性,将<property name = "hibernate.hbm2ddl.auto" value = "create" />的值修改为“update”

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。