歡迎您光臨本站 註冊首頁

jSqlBox 4.0.1 發布,Java 資料庫持久層工具

←手機掃碼閱讀     admin @ 2020-02-20 , reply:0

 jSqlBox是一個Java全功能資料庫持久層工具,主要特點是架構優、尺寸小、功能全,基本上所有與資料庫操作相關的功能,jSqlBox都已提供。  

jSqlBox有Java6和Java8兩個版本發布,主頁:  https://gitee.com/drinkjava2/jsqlbox

本次更新內容: 
1. 從本次版本起,所有依賴都用源碼內嵌的方式整合在項目里,不再有任何外部庫依賴了,發布的單個jar包約1M大小。雖然尺寸看起來有點大,但是它提供的功能相當於以下軟體主要功能的組合,所以依然可以用短小精悍來形容:

  • DbUtils的JDBC操作
  • Spring的依賴注入和聲明式事務
  • MyBatis的實體關聯查詢
  • Hibernate的DDL生成、資料庫方言、實體CURD         
  • Sharding-JDBC的分庫分表
  • Seata的分散式事務(基於自動創建回滾SQL,對業務無侵入)   

2. [#IUVVF] 資料庫方言從原來的枚舉類型改為普通類的形式,以便於用戶自已添加新的資料庫方言,雖然jSqlBox已經自帶了80多種方言,但能夠添加自定義方言是一個架構上的改進。  
    方言使用示例:

  • Dialect dialect = Dialect.MySQL57InnoDBDialect; //使用系統自帶的方言  
  • Dialect myDialect = new Dialect("My"); //用戶自定義一個新的資料庫方言,方言的各個屬性為空,需要手工設置   
  • Dialect myDialect = new Dialect("Oracle9iDialect"); //手工自定義一個新的方言,以已存在的"Oracle9iDialect"方言為模板,可以在這個模板基礎上修改它的個別屬性  

3. [#I14OUZ] 改正了@Column標籤與JPA定義不符的問題,在columnDefinition里可以包含額外的DDL片段,例如:  

  • @Column(insertable = false, columnDefinition = "timestamp not null default now() comment '創建時間'")
  • java.util.Date d9;

4. [#I11Z5L] 實體映射新增了Calendar日期類,並新增了對以下7種Java8日期類型的支持:

  • LocalDate 映射為JDBC的DATE類型(具體生成的DDL還與資料庫方言相關,下同)
  • LocalTime 映射為TIME類型
  • OffsetTime 映射為TIME類型
  • Instant 映射為TIMESTAMP類型
  • LocalDateTime 映射為TIMESTAMP類型
  • OffsetDateTime 映射為JTIMESTAMP類型
  • ZonedDateTime 映射為TIMESTAMP類型

5. 更正了在Oracle資料庫下java.util.Date日期映射出錯的問題,並增加了對JPA標準註解@Temporal的支持。到目前為止,jSqlBox一共支持15個主要的JPA註解(但是不包括@OneToMany、@ManyToOne註解,因為jSqlBox只是一個輕量級DAO工具,沒有實體容器)。 

6. 日誌系統獨立出來成為一個jLogs模塊,它通過讀取配置文件來決定採用何種日誌系統,如果沒有配置文件存在,日誌默認輸出到控制台。

7. 舊版的SqlBoxContext和JSQLBOX這兩個類,因為名稱太長不再推薦使用,在SqlBoxContext類上作了@Depercated標記,從4.0.0版本起改用命名更短的DbContext和DB。

8. 內嵌的jBeanBox模塊更新到4.0.0版,這是一個只有3000行源碼的通用IOC/AOP工具,新增了@Name、@Qualifier、@Component等註解和類掃描功能(感謝centychen的class-scanner項目!)。    

最後順便說一下,jSqlBox發布時分為jre6和jre8兩個版本發布,以前的做法是將Java6和Java8放在兩個目錄里分別開發,而從jSqlBox 4.0.0版開始,合併在一個源碼目錄里了,它實現的原理是通過在源代碼里添加編譯開關,示例如下,例如有一段源碼用到了Java8才有的日期類型:
 


    /*- JAVA8_BEGIN */  
       JAVA_TO_TYPE_MAP.put(java.time.LocalDate.class, Type.DATE);
           ....
    /* JAVA8_END */


在JDK8下發布時按正常發布步驟即可,當在JDK6環境下發布時,只需要先將 /*- JAVA8_BEGIN */ 用IDE全局替換成 /*- JAVA8_BEGIN, 將 /* JAVA8_END */ 全局替換成 JAVA8_END */ 即可。這樣雖然Java語言本身雖然不支持編譯開關,但利用源碼的註釋和文本替換也可以很容易實現在不同的JDK版本下編譯和發布。   


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/113494/jsqlbox-4-0-1-released
jSqlBox 4.0.1 發布,Java 資料庫持久層工具已經有258次圍觀

http://coctec.com/news/all/show-post-225405.html