這個庫的目的是提取有關資料庫表和列及其關係的資訊,併為你建立執行時類,你可以在程式碼/服務中使用這些類,而無需自己建立類,這樣你就可以在編寫程式碼時不必浪費時間建立類,而是專注於邏輯。
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。因為它還處於原始階段。它更多地被用作“概念驗證”或“自我挑戰”的手段。但我認為,如果人們感興趣並且認為它可以為相當多的人所用,我可以擴充套件它,並利用它製作一個嚴肅的開源庫,同時提供一些更復雜的功能,但仍然保持輕量級。