sproket/Persism:Java低程式碼的ORM框架
Persism 是一個用於 Java 17 或更高版本的簡單、自動發現、自動配置和約定優於配置的 ORM(物件關係對映)庫。
Persism的API很小。大多數情況下,你只需要一個Connection和一個Persism Session物件,你就可以開始了。你的POJO可以有可選的表和列名註釋,並且可以選擇實現一個Persistable介面,用於你需要跟蹤UPDATE語句的屬性變化。
Persism為你自動推算和發現:建立一個表,編寫一個JavaBean,執行一個查詢,Persism使用簡單的對映規則來尋找你的表和列名,只要求在它找不到匹配的地方進行註釋。
Persism不需要特殊的配置。把JAR放到你的專案中就可以了。
Persism有註釋,但它們只在某些東西超出常規時才需要。在大多數情況下,你可能甚至不需要它們。
Persism通常可以為你檢測表和列的對映,包括主鍵/生成鍵和帶預設值的列。
Persism預設會做正確的事情。Persism理解你的類被稱為Customer,你的表被稱為CUSTOMERS。它理解你的表列是CUSTOMER_ID,你的屬性是customerId。
Persism理解你的類被稱為Category,你的表被稱為CATEGORIES。沒問題。不需要為此做註解。Persism使用註釋作為後備手段--只有當某些東西超出常規時才進行註釋。
大小100k以下。是的,如果你想的話,可以把它裝在軟盤上。Persism沒有依賴性,但是它將利用基於執行時可用的任何日誌 - SLF4J、LOG4J或JUL。
支援資料庫:Derby, Firebird, H2, HSQLDB, Informix, MSAccess, MSSQL, MySQL/MariaDB, Oracle (12+), PostgreSQL, SQLite.
以下是CRUD案例程式碼:
import static net.sf.persism.Parameters.*; import static net.sf.persism.SQL.*; Connection con = DriverManager.getConnection(url, username, password); // Instantiate a Persism session object with the connection Session session = new Session(con); List<Customer> list = session.query(Customer.class, sql("select * from Customers where CUST_NAME = ?"), params("Fred")); // or List<Customer> list = session.query(Customer.class, proc("sp_FindCustomers(?)"), params("Fred")); Customer customer; customer = session.fetch(Customer.class, sql("select * from Customers where CUST_NAME = ?"), params("Fred")); // or customer = session.fetch(Customer.class, proc("sp_FindCustomer(?)"), params("Fred")); if (customer != null) { // etc... } // You don't need the SELECT parts for Views or Tables List<Customer> list = session.query(Customer.class, where("CUST_NAME = ?"), params("Fred")); // You can reference the property names instead of the column names - just use :propertyName List<Customer> list = session.query(Customer.class, where(":name = ?"), params("Fred")); // Order by is also supported with where() method List<Customer> list = session.query(Customer.class, where(":name = ? ORDER BY :lastUpdated"), params("Fred")); // Named parameters are also supported - just use @name SQL sql = where("(:firstname = @name OR :company = @name) and :lastname = @last"); customer = session.fetch(Customer.class, sql, params(Map.of("name", "Fred", "last", "Flintstone"))); // fetch an existing instance Customer customer = new Customer(); customer.setCustomerId(123); if (session.fetch(customer)) { // customer found and initialized } // Supports basic types String result = session.fetch(String.class, sql("select Name from Customers where ID = ?"), params(10)); // Fetch a count as an int - Enums are supported int count = session.fetch(int.class, sql("select count(*) from Customers where Region = ?"), params(Region.West)); // Insert - get autoinc Customer customer = new Customer(); customer.setCustomerName("Fred"); customer.setAddress("123 Sesame Street"); session.insert(customer); // Inserted and new autoinc value assigned assert customer.getCustomerId() > 0 // Update customer.setCustomerName("Barney"); sesion.update(customer); // Update Customer // Delete session.delete(customer); // Handles transactions session.withTransaction(() -> { Contact contact = getContactFromSomewhere(); contact.setIdentity(randomUUID); session.insert(contact); contact.setContactName("Wilma Flintstone"); session.update(contact); session.fetch(contact); }); |
相關文章
- Java ORM 框架指南JavaORM框架
- JNPF低程式碼開發框架程式碼 生成器設計框架
- 手把手教你寫一個Java的orm框架(4)JavaORM框架
- 手把手教你寫一個Java的orm框架(2)JavaORM框架
- 手把手教你寫一個Java的orm框架(1)JavaORM框架
- 手把手教你寫一個Java的orm框架(3)JavaORM框架
- 哪種企業更需要低程式碼開發框架框架
- DoytoQuery:用於CRUD的Java第二代ORM框架JavaORM框架
- 低程式碼和無程式碼的區別
- 低程式碼VS無程式碼
- 自定義ORM框架ORM框架
- 選擇低程式碼應用程式開發框架的5個關鍵標準框架
- 低程式碼 yyds
- 低程式碼 系列 —— 中後臺整合低程式碼預研
- 使用C++的ORM框架QxORMC++ORM框架
- 企業中的低程式碼與無程式碼
- 低程式碼和無程式碼的注意事項
- 低程式碼是開發的未來嗎?淺談低程式碼平臺
- 低程式碼優於無程式碼?
- “造輪運動”之 ORM框架系列(二)~ 說說我心目中的ORM框架ORM框架
- 非框架內使用 ORM框架ORM
- Python之ORM框架SQLAlchemyPythonORM框架SQL
- 什麼是低程式碼?低程式碼開發平臺的三大優勢
- 手擼ORM淺談ORM框架之Add篇ORM框架
- 手擼ORM淺談ORM框架之Update篇ORM框架
- 手擼ORM淺談ORM框架之Query篇ORM框架
- 手擼ORM淺談ORM框架之Delete篇ORM框架delete
- 低程式碼+原生安全=?
- 低程式碼簡史
- 手把手擼套框架-ORM框架的選擇框架ORM
- 聊聊「低程式碼」的實踐之路
- 什麼是低程式碼的窘境?
- 什麼是低程式碼?低程式碼平臺能解決什麼樣的問題?
- 低程式碼開發平臺的功能有哪些?低程式碼“功能清單”一覽
- 不想寫sql?試試這款輕量級JAVA ORM框架!SQLJavaORM框架
- 手擼ORM淺談ORM框架之基礎篇ORM框架
- 無程式碼相對於低程式碼的優勢分析
- 低程式碼是什麼意思?低程式碼平臺的技術特點是什麼?