因此,Hello World ...经过近一年的开发,JPA Buddy的第一个版本终于发布了!这是一个免费工具,应该成为您使用JPA和所有相关项目的忠实编码助手:Hibernate,Spring Data,Liquibase和其他主流堆栈。
“我为什么要使用它?” -对于任何新工具或框架,这都是一个公平的问题。简而言之,如果您使用JPA进行数据持久化,那么JPA Buddy将帮助您提高效率。在本文中,我将对该工具进行概述。我希望它在Java开发人员最喜欢的工具,使用JPA,Spring,Liquibase以及当然是最高级的Java IDE-IntelliJ IDEA的工具中占有一席之地。
背后的故事
我们是CUBA平台的创建者(顺便说一下,几周前它已重命名为Jmix :))-一种基于Java的快速应用程序开发环境。CUBA平台是一个非常独特的产品。它包含两个部分:框架和开发工具。CUBA Studio(用于CUBA的专用IDE)最受喜爱的部分之一是“实体设计器”,它使CUBA社区的2万多名成员惊讶于任何人都能轻松快捷地设计其数据模型。即使对于从未听说过JPA的用户,诸如创建JPA实体,约束,DDL脚本之类的事情也变得轻而易举。
自2016年以来,当CUBA开源时,我们参加了全球数十个会议,收集反馈并更好地了解开发人员的需求。最烦人的问题之一是-“我们可以在没有CUBA的情况下在您的应用程序中使用您的实体设计器吗?”。我很高兴地宣布,通过JPA Buddy,我们成功地将否定答案改为...是的!
JPA Buddy是非侵入性的,不需要任何额外的依赖关系-它是一个工具,而且只是一个工具。这意味着您不仅可以从使用JPA作为持久层的新项目中受益,而且还可以从已有项目中受益。它是IntelliJ IDEA的补充,可启用许多与JPA相关的功能。JPA Buddy可帮助您生成代码,查找和修复潜在的错误,重构并执行其他费力的样板操作。
范围
在JPA Buddy获得其第一行代码之前,我们进行了一次调查,以收集JPA和周围技术的各种用例。结果看起来不是很奇怪-平均应用时下正春启动的应用程序与休眠作为一个ORM实现,春天JPA的数据作为数据处理机制和迁飞或Liquibase数据库迁移系统。嗯,几乎忘了Lombok了。此技术堆栈成为我们第一个版本的主要关注点。
在谈到工具的目标时,我们追求以下目标:
对于第一个版本,我们能够提供涵盖数据模型开发大多数方面的相当多的功能。对于使用Liquibase的人来说是个好消息-它已在JPA Buddy的第一个版本中实现并可用。对于Flyway用户而言,这不是一个好消息-它位于功能的高优先级列表中。
在长期计划中,我们将介绍以下功能:
在第二阶段,我们还需要牢记一些功能:Quarkus和Micronaut支持,REST API和CRUD操作的UI生成。
正如你可以看到,前面还有很长的路要走,我们将非常感激您对优先上述所有功能的帮助-不要犹豫,让我们知道您的观点通过我们的联系表格,微博或加入不和谐聊天。
概述
让我简要概述一下它的外观。自安装JPA Buddy以来,您将找到3个其他工具窗口:JPA Structure,JPA Palette和JPA Inspector。
JPA结构
JPA Structure始终在左下角可用。它提供了一个以数据为中心的综合项目视图。您可以将其用于许多不同的目的:
更多功能即将推出...
JPA调色板和检查器
JPA Palette位于右上方,其内容取决于上下文。仅当Buddy准备提供某些东西来快速生成代码时,它才可用。当前,该工具在编辑以下对象时出现:JPA实体,Spring Data存储库和Liquibase changelog。只需从列表中找到所需的选项,然后双击它即可!
JPA Inspector放置在面板下方的右下角,并且与它同步地变得可见和不可见。检查器还取决于上下文。“组件面板”为您提供了许多用于生成新代码部分的选项,而“检查器”旨在修改已经存在的代码。在这里,您可以看到调整代码的选定部分所必须具备的功能,例如,实体字段或Liquibase变更集的语句。
这些功能对于新手和有经验的用户都非常有用。青少年可以使用直观的可视设计器评估选项的完整列表,选择合适的选项并生成有效的代码。老年人经常会忘记一些日常不常用的小东西,而Buddy会在搜索文档时节省宝贵的时间,以便记住正确的注释或语法。
Liquibase集成
对于那些使用Liquibase作为数据库架构版本控制解决方案的人来说是个好消息。JPA Buddy与它紧密集成,从而实现了方便的变更日志编辑,智能的变更日志生成和灵活的类型管理。
首先,您将获得一个可视化的设计师来编辑变更日志。在“选用板”中浏览各种可用命令,然后使用“检查器”工具窗口查看可以应用于所选语句的不同设置。
其次,您可以定义自己的映射以匹配Java类型(转换器/休眠类型)以及每个特定DBMS应该使用的映射。当这个功能非常有用时,让我举几个例子:
传统上,可以使用columnDefinition属性解决所有这些情况,但是,此解决方案不适用于跨DBMS解决方案。
最后,最省时的功能:Liquibase changelogs生成器。根据我的经验(由前面提到的调查证明),有两种主要的创建Liquibase变更日志的方法:
第二种选择似乎是最常用的一种。因此,我们比较两个数据库。目标数据库相对容易获得,例如,我们可以简单地创建生产环境的转储。问题与源数据库有关。让我们从一个小问题开始:开发人员的便携式计算机上用于开发的数据库可能与生产数据库的DBMS类型不同。嗯,这可以通过例如在Mac上的Docker中运行MS SQL来解决。更严重的是,很难找到“干净的”源数据库,因为它通常是在Hibernate模式生成器进行开发时形成的。通常,这会导致一堆垃圾表和属性,这些垃圾表和属性最终会出现在生产数据库中。
JPA Buddy提供了令人赞叹的功能,可以通过将JPA实体与目标数据库(或目标数据库的快照)进行比较来直接生成变更日志。您可以出于开发目的运行H2,但仍可以为Oracle或MS SQL或您在生产中使用的任何内容提供正确的变更日志。这样可以确保,如果您的变更日志中有垃圾,那么这就是源代码中的垃圾。您需要做的只是保持数据模型的清洁,并确保迁移不会给生产数据库带来不必要的影响。
changelogs生成器的另一个功能是能够将结果语句过滤为3类:
您决定如何拆分此类语句:将它们放入单独的变更日志中,或仅使用某些标签或上下文对其进行标记。
结论
本文概述了JPA Buddy的第一个发行版。显然,与任何全新产品一样,它无法避免某些问题和缺陷。如今,主要重点是完善现有功能,检测和实现我们错过的基本功能。直接说来,我们想激发您成为早期采用者并形成最初的爱好者社区。安装JPA Buddy,尝试一下并与开发团队分享您的反馈-这将有助于将产品推向正确的方向!
原文链接:http://codingdict.com