这个库的目的是提取有关数据库表和列及其关系的信息,并为你创建运行时类,你可以在代码/服务中使用这些类,而无需自己创建类,这样你就可以在编写代码时不必浪费时间创建类,而是专注于逻辑。
Java Classy是一个 Java 库,旨在根据您的数据库模型生成模型和 DTO 类,然后您可以在运行时使用这些类。您可以在其中找到这些类的包分别名为 classy.model 和 classy.dto。目前,此库仅支持 MySQL 数据库。
添加依赖项
要开始使用 Java Classy,请将以下依赖项添加到您的pom.xml或build.gradle:
Maven
<dependency> |
配置:
为了运行此库,资源文件夹中必须有 db_connect.properties。其中的内容应如下所示
db.url=<DATABASE_URL> |
- annotateJPA - 如果此参数设置为 true,则您的模型类将使用 JPA 注释进行注释
- generateDTOs - 如果此参数设置为 true,除了模型类之外,您还将拥有这些模型的 DTO 代表,它们在运行时位于 classy.dto 包内。请为此生成 Github markdown
代码设置
为了使用这个库,不需要设置太多的代码。只需用 @GenerateModel 注释注释你的主类,它就可以生成代码。
@GenerateModel |
这些类是由预处理器创建的,然后进行编译,并在运行时使用。所以虽然你没有创建它们,它们是在编译时创建的。
更多解释
这个库确实在编译时生成中起到了预处理器的作用。因此,当您构建项目时,您将无需创建类即可构建类。因此,您只需运行迁移,库就会为您创建类。因此,这实际上使 Java 可以非常安全地编写类,而无需您浪费时间编写这些类。
1.此库附带了自己的默认类,但您仍然可以在服务中使用自定义模型类,只需导入它们即可,此库仅基于您的数据库模型创建包(classy.model 和 classy.dto)类,您可以在运行时使用这些包,因此它还附带 DTO 类。问题在于模型通常具有关系,如果您想创建自定义类,那么在这种状态下事情会变得有点混乱。我确信将来可以改进此库的是,也许您可以在参数中添加模型包,并且此库可以扫描是否应该导入而不是创建已存在的类。
2. 我知道 JPA Create,但问题是,JPA Create 是模型优先的设计,而我所创造的和我更喜欢的思维方式是数据优先的设计。所以假设你用其他语言创建了一些项目,你有数据库但没有 Java 代码,你可以用这个库更轻松地迁移该项目
3. 我知道 JOOQ,但据我所知,JOOQ 是一个完整的框架,它是为了赚钱而创建的。如果我继续开发这个库,我想创建的是轻量级开源库,帮助开发人员完成我提到的任务。当然,我会在其中实现更多的灵活性,可能还会添加其他功能,但仍保持其轻量级。
4、您可以像代码中的任何其他包一样找到这些包(classy.model 和 classy.dto)。但生成规则是,类的名称是表的名称,只是没有下划线,
例如;名为 employee_details 的表将被称为 classy.model.EmployeeDetails(当然,您可以导入 classy.model.* 或 classy.model.EmployeeDetails,因此您可以将其写为 EmployeeDetails)
至于 dtos 生成,您只需向其中添加 DTO。例如,employee_details 的 dto 将是 classy.dto.EmployeeDetailsDTO
5、也许它需要像 intellij 插件或者其他东西,但从我所看到的,它是由 lombok 以外的完全不同的团队开发的。
值得庆幸的是,我不知道这是因为 IntelliJ lombok 插件还是标准 IntelliJ,一旦我构建项目,我就可以毫无问题地在 IDE 中看到这些类。
公平地说,是的,这个库听起来确实有点像 lombok,而且 lombok 也是一种灵感来源,目前这个库本身确实使用了 lombok。因为它还处于原始阶段。它更多地被用作“概念验证”或“自我挑战”的手段。但我认为,如果人们感兴趣并且认为它可以为相当多的人所用,我可以扩展它,并利用它制作一个严肃的开源库,同时提供一些更复杂的功能,但仍然保持轻量级。