java jsql_历时一年,Java 持久层工具 jSqlBox 迎来首个正式版

历时一年开辟,Java持久层对象jSqlBox终于宣布1.0.0正式版,与以前的Snapshot版本相比,1.0.0版本是一个真正面向临盆情况的持久层对象了,可以用于实际开辟了。以下为jSqlBox项目最新版本内容介绍:

jSqlBox是一个Java持久层对象,设计目标是用来代替今朝的Hibernate/MyBatis/JdbcTemplate/DbUtils等持久层对象。jSqlBox的重要特点:模块化设计。 jSqlBox将Jdbc对象、事务、方言和数据库脚本生成等功能分成子模块,由不合的子项目实现,每个子项目都可以离开jSqlBox存在,甚至可供其它ORM对象应用,避免反复创造轮子。同时jSqlBox的各个子模块(除TinyNet外)在开辟中大年夜量借签了其它成熟项目,例如,方言模块(jDialects)采取了Hibernate的70种方言,事务模块(jTranscations)在供给简化版声明式事务的同时兼容Spring事务,底层数据库拜访对象(jDbPro)基于Apache Commons DbUtils(以下简称DbUtils),链式风格和模板的惹人则分别受jFinal和BeetlSql启发。

与DbUtils兼容,基于DbUtils开辟的项目可以无缝进级到jSqlBox,享受到jSqlBox供给的高等功能如跨数据库开辟、分页、模板、JPA注解支撑、数据库脚本生成、ActiveRecord风格等。

支撑SQL写法多。得益于模块式架构,jSqlBox大年夜最底层的JDBC到最新式的NoSQL式萌芽都有,是今朝支撑SQL写法最多的持久层对象。

进修曲线腻滑、可保护性好。得益于模块化架构,jSqlBox项目标本体部分仅由13个Java类构成。持久层的工作被分散到各个子模块中去了,模块化设计带来的好处就是模块化进修,只要懂得各个模块的功能,就能很快控制jSqlBox的应用。最极端情况是DbUtils应用者可以无进修直接上手jSqlBox.

List> mapList1 = ctx.nQuery(new MapListHandler(netProcessor(User.class, Address.class)), "select u.**, a.** from usertb u, addresstb a where a.userId=u.id"); TinyNet net = ctx.netCreate(mapList1); Assert.assertEquals(10, net.size()); List> mapList2 = ctx.nQuery(new MapListHandler(), netConfig(Email.class) + "select e.** from emailtb as e"); ctx.netJoinList(net, mapList2); Assert.assertEquals(15, net.size());

多项技巧立异,如Inline风格、动态设备、改进的链式风格、NoSQL主动越级萌芽及树构造萌芽等。

jSqlBox的开辟目标是试图解决其它持久层的一些问题,重要有:架构有问题,反复创造轮子。其它持久层平日试图供给一篮子解决筹划,然则不分模块的开辟方法使得代码弗成复竽暌姑。例如Hibernate、MyBatis、jFinal、NutzDao、BeetlSql、JdbcTemplate等对象,都面对着若何处理跨数据库开辟的问题,它们的做法要么就是自已大年夜头到尾开端开辟一套方言对象,要么就是干脆不支撑数据库方言,没有借签其它对象的结不雅,也没有推敲将本身的结不雅分享给其它对象。

过于偏执竽暌冠某项技巧,试图用一把锤子解决所有问题。例如Hibernate和JPA对象化设计过度,痴肥复杂。MyBatis的XML设备繁琐,没有供给CRUD办法(有插件改良,但总不如原生支撑好)。JdbcTemplate和DbUtils侧重于SQL,开辟效力低。BeetlSql完全环绕模板打转。jFinal和Nutz则对绑缚式倾销情有独钟,没有将持久层自力出来,买个萝卜搭块糕。

不支撑动态设备。大年夜数据库表到Java对象,称为ORM,这须要进行设备。但这些常见的持久层对象,不支撑动态设备,这对于须要动态生成或修改设备的场合是个重大年夜缺点。例如JPA注解或XML设备的实体Bean,在运行期很难更改外键接洽关系关系、数据库表映射关系设备。

jSqlBox的缺点

它太新了,出生不到一个月(固然陆陆续续在Github和码云上的开辟时光已跨越1年),应用者少,设计缺点和法度榜样中的Bug都没有裸露出来,文档不完美,今朝不建议在重要项目应用。

如安在项目中惹人jSqlBox?

jSqlBox需Java6或以上,在项目pom.xml中添加如下行: com.github.drinkjava2 jsqlbox 1.0.0 

Maven将主动下载jsqlbox-1.0.0.jar、jdbpro-1.7.0.1.jar、jdialects-1.0.6.jar、commons-dbutils-1.7.jar四个包。下图显示了各个包之间的依附关系及包的大年夜小以及源文件数量。

b3e5de92c80c112023668aec14c75710.jpg-wh_651x-s_3427548399.jpg

如须要设备事务,还需添加对jtransactions-1.0.0.jar的依附,具体请拜见jTransactions项目。

jSqlBox快速入门

第一个jSqlBox示例: 数据源设定、高低文生成、创建数据库表格、插入和攫取内容public class HelloWorld { @Id private String name; public String getName() {return name;} public void setName(String name) {this.name = name;} @Test public void doText() { HikariDataSource ds = new HikariDataSource();//连接池设定 ds.setJdbcUrl("jdbc:h2:mem:DBName;MODE=MYSQL;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=0"); ds.setDriverClassName("org.h2.Driver");//应用H2内存数据库来进行单位测试 ds.setUsername("sa"); ds.setPassword(""); SqlBoxContext ctx = new SqlBoxContext(ds); //jSqlBox高低文生成 ctx.setAllowShowSQL(true);//打开jSqlBox的日记输出 String[] ddls = ctx.getDialect().toCreateDDL(HelloWorld.class);//数据库DDL脚本生成 for (String ddl : ddls) ctx.nExecute(ddl);//新建数据库表 HelloWorld hello = new HelloWorld(); hello.setName("Demo"); ctx.insert(hello);//插入一行记录 Assert.assertEquals("Demo", ctx.nQueryForObject("select name from helloworld")); ds.close();//封闭连接池 } }

推荐阅读

开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散

DB-Engines 宣布了 2017 年 12 月份的数据库排名。排前 20 名的数据库中,Oracle 稳居第一,排名在第 9 名的 Cassandra 赶超排在第>>>详细阅读

地址:http://www.17bianji.com/lsqh/39474.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值