jSqlBox是一個Java全功能資料庫持久層工具,主要特點是架構優、尺寸小、功能全,基本上所有與資料庫操作相關的功能,jSqlBox都已提供。
jSqlBox有Java6和Java8兩個版本發布,主頁: https://gitee.com/drinkjava2/jsqlbox
本次更新內容:
1. 從本次版本起,所有依賴都用源碼內嵌的方式整合在項目里,不再有任何外部庫依賴了,發布的單個jar包約1M大小。雖然尺寸看起來有點大,但是它提供的功能相當於以下軟體主要功能的組合,所以依然可以用短小精悍來形容:
2. [#IUVVF] 資料庫方言從原來的枚舉類型改為普通類的形式,以便於用戶自已添加新的資料庫方言,雖然jSqlBox已經自帶了80多種方言,但能夠添加自定義方言是一個架構上的改進。
方言使用示例:
3. [#I14OUZ] 改正了@Column標籤與JPA定義不符的問題,在columnDefinition里可以包含額外的DDL片段,例如:
4. [#I11Z5L] 實體映射新增了Calendar日期類,並新增了對以下7種Java8日期類型的支持:
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
]