SDK-0.7.8-Release-实体管理 - ApiHug-Release

2024-04-14 12:44

本文主要是介绍SDK-0.7.8-Release-实体管理 - ApiHug-Release,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 🤗 ApiHug × {Postman|Swagger|Api...} = 快↑ 准√ 省↓

  1. GitHub - apihug/apihug.com: All abou the Apihug   
  2. apihug.com: 有爱,有温度,有质量,有信任
  3. ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace

更多精彩参考官方:apihug.com: 有爱,有温度,有质量,有信任  最新 release note

docs/framework/versions/0.7.8_cn.md · dearxuecom/apihug.com - Gitee.com

💁 如果你尚未使用 ApiHug 领域实体对象管理(ORM), 然后这个迁移将不会影响你,但最好和官方保持统一最新版本! :-)

0.7.8-RELEASE 添加功能:

  • 将 Repository 扩展, 迁移到独立的 trait 目录管理, 使代码结构更简单清晰;
  • lite 模式作为 stub 默认编译模式,将使他更迅捷;

Repository 迁移

目的:

  1. 使 repository 更直接简单.
  2. 使 repository 扩展更方便维护.

举个在你模块 book-app 已存在 的 repository为例: com.novel.book.wire.domain.book.repository.BookAuthorRepository:

现有逻辑在: in book-app\src\main\stub\com\novel\book\wire\domain\book\repository\BookAuthorRepository:

@Repository
@SuppressWarnings("Duplicates")
public interface BookAuthorRepositoryextends HopeJdbc<BookAuthor>,BookJdbcSupport,BookAuthorDSL,ListCrudRepository<BookAuthor, Long> {@Derived@QueryOptional<BookAuthor> findByName(final String name);//Other method
}

⚠️⚠️⚠️ 首先保证你的 @Derived 已经备份, 在你跑 stub 命令前;(如果版本管理,先commit为妙)

因为升级后的 stub 只保留纯 generated代码, 也就是是可以跑 stub 命令中被完全删除.

Step1

跑下本模块的 stub 命令, 首先保证你SDK 版本已经被更新到 0.7.8-RELEASE+, gradle\libs.versions.toml:

[versions]
# libraries
apihug = "0.7.8-RELEASE"

命令行可以到你项目的 README.md 找到:

./gradlew.bat book-app:clean stub build -x test -x stubTest

跑完后你会看到一个新的 sourceSetbook-app\src\main\trait;

💁‍♀️ 你可能需要重新到你的 gradle tool window 触发本项目的 Reload Gradle Project ,否则可能提醒 book-app\src\main\trait 不能被当做 sourceSet!

Step2

  1. 手动将 @Derived copy 回到 _BookAuthorRepository(trait 目录下) & BookAuthorRepository(stub 目录)(只有第一次迁移需要,以后只需要在 _BookAuthorRepository 编写);
  2. 再次启动 stub 命令.

从今往后, 所有Repository扩展 @Derived 方法, 都可以在独立的 book-app\src\main\trait 目录维护啦:

  1. stub 命令将你需要融入(trait)的方法(也就是老的方法)合进到运行时的 BookAuthorRepository 类
  2. 避免 BookAuthorRepository 在持续开发中大量的冲突,保持他的简单和直观.
  3. 也很容易维护我们的 repository扩展接口, 这里保持纯的 SQL 逻辑;

真实项目的目录结构:

+---java
|   \---com
|       \---novel
|           \---book
+---stub
|   \---com
|       \---novel
|           \---book
|               \---wire
|                   \---domain
|                       +---account
|                       |   +---dsl
|                       |   \---repository
|                       +---book
|                       |   +---dsl
|                       |   \---repository
|                       \---job
|                           +---dsl
|                           \---repository
\---trait\---t\---com\---novel\---book\---wire\---domain+---account|   \---repository+---book|   \---repository\---job\---repository

Best Tips

你可以把 _BookAuthorRepository 想象成 BookAuthorRepository伴生类(虽然有继承关系:方便获得编辑器提示) ;

只是 ApiHug 工具链完全帮你处理掉了过程的复杂性!

参考Scala 半生对象 Companion objects;

如果你过程中遇到任何问题,请垂询我们:

api-hug-contact

这篇关于SDK-0.7.8-Release-实体管理 - ApiHug-Release的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/903024

相关文章

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

Redis实现RBAC权限管理

《Redis实现RBAC权限管理》本文主要介绍了Redis实现RBAC权限管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 什么是 RBAC?2. 为什么使用 Redis 实现 RBAC?3. 设计 RBAC 数据结构

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Linux内存泄露的原因排查和解决方案(内存管理方法)

《Linux内存泄露的原因排查和解决方案(内存管理方法)》文章主要介绍了运维团队在Linux处理LB服务内存暴涨、内存报警问题的过程,从发现问题、排查原因到制定解决方案,并从中学习了Linux内存管理... 目录一、问题二、排查过程三、解决方案四、内存管理方法1)linux内存寻址2)Linux分页机制3)

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用