jSqlBox 4.0.1 发布,Java 数据库持久层工具
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版本下编译和发布。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
分布式监控系统 WGCLOUD v2.3 源码发布
码云地址:https://gitee.com/wanghouhou/wgcloud GITHUB:https://github.com/tianshiyeben/wgcloud 下载:http://www.wgstart.com 最近一直忙工作,现在已经将所有源码整理完成,已经同步提交github和码云。 如果有任何建议和发现bug,请提交issues或发送邮件。
- 下一篇
Laravel 6.15.1 发布
Laravel 6.15.1 发布了,主要更新内容有: Added 将whereNull和whereNotNull添加到Collection(#31425) 添加了Illuminate\Foundation\Testing\MockStream类 (#31447) Fixed 修复event:list命令,用于显示未注册事件的命令(#31444) 修复了带有以下内容的嵌套 json 数组的 postgres 语法(#31448,b3d0da1) 更新说明:https://laravel-news.com/laravel-6-15-1
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案