sql2java:一个古老但稳定的轻量级的ORM工具的使用说明
2017-07-14 00:38
441 查看
大约在2011年,我刚开始接触java开发的时候 ,接触的第一个ORM工具就是sql2java.
官网地址:https://sourceforge.net/projects/sql2java
这是一个轻量级的java code generator.可以根据你的要求,对数据库中指定的table/view生成全套的java bean 对象以及针对这张表常用数据库操作(增/删/改/查),支持事务,有了它,关于数据库操作的相关代码你基本上就不需要写了.
当时我还挺奇怪,那时已经有hibernate等一大批ORM工具了,为什么老板选择用sql2java这么个不知名的工具来生成数据库操作代码。老板是个在硅谷做过oracle高管的海归创业人人士,他给我的理由是这个工具比较轻量级,就这么一句简单的话。
事实上当时我也没什么选择权,老板让用什么就用什么呗。在没有中文说明,网上找不到教程的情况,硬头头皮仅靠看软件自带的readme.txt和注释,把这个工具玩转了,到后来随着开发的越来越深入,我对sql2java也越发了解.越发体会到老板那句评价的含义,果然是个轻量级的工具。
相比hibernate和很多其他的ORM工具,它确实太简陋了,连个命令行界面都没有,更别提GUI界面了。
对于刚入门的人来说,它确实不太友好:所有的配置都需要手工修改一个properties文件,要是不小心改错了,它可能就抛出一堆异常。
而且它一次查询只能对单表操作,不能支持复杂的跨表查询(join,union)。
但缺点往往可以变成优点:
这个工具很小,生成代码的人机界面是一个ant脚本(build.xm),执行脚本,就自动生成所有的数据库相关代码并编译,特别适合ant自动化脚本编译。
框架搭得很好,java核心代码很少,控制代码生成的主要是velocity模板,熟悉velocity后完全可以根据自己的需要自由定制模板,增加/修改生成数据库操作代码。入门可能麻烦点,但它给了开发者一个更自由更广阔施展空间,你完全可以做出一个定制化的ORM工具。
就算它不支持跨表查询,你也可以自己修改模板定制一个。
但是这个开源工具早已经不再维护了,最后一个release版本是08年的。可以说它已经死了,真正的老古董了。
如果还有兴趣了解它,那我很佩服你。
虽然它已经不再更新了,但就最后一个release版本而言,也已经很稳定了,并且已经支持不少数据库(oracle,mysql,db2,mssql,hsql,derby,postgresql),对我而言主要是用mysql,oracle,drby,足够用了,加上它生成的代码很稳定也很漂亮。用久了,熟悉了,更是放不下。
the lastest release version:sql2java-2-6-7.zip
软件运行环境要求
java (1.6以上)
apache ant (我是用1.8以上的版本)
如何安装java和ant不是本文的讨论范围
这个吧,也不难,关于生成java代码的所有参数都定义在
这也是本文的主要目的:介绍
请打开
那么其他参数呢?不用了解么?
等你能正常生成自己的代码后,你自然有兴趣看sql2java.properties文件中的英文注释,其实那些英文描述得很清楚,仔细看了自然都明白了。
进一步如果你完全熟悉了它的结构,你可以自己改模板,生成自己需要的方法和类
(1/8) CONFIGURE YOUR DATABASE ACCESS
顾名思义,这开始70多行都是用配置数据库访问参数的,表被这70行代码吓住,仔细看,是分别针对7种数据库定义的数据库连接。
第一个是默认的hsql数据库,其他6种(oracle,mysql….)数据库的参数都是
所以在这部分,你要先注释掉hsql部分参数,然后根据自己的数据库类型,打开对应的注释。
比如我用oracle,所以我对oracle部分做如下修改
(2/8) CONFIGURE RETRIEVAL OF AUTO GENERATED KEY
关于自增长键是怎么回事儿,不是本文说明的范围,请自行脑补。
这部分也是对应了不同类型的数据库有不同的参数,默认是hsql.如果你有自增长键,就关掉hsql,打开对应数据库的部分注释。
(3/8) GENERATED SOURCE CODE
这部分有两个重要的参数需要说明:
其他参数入门阶段统统不要改
(4/8) FILTER OUT CERTAIN TABLES
jdbc.tablenamepattern 可以定义一个过滤器,根据名称来选择要生成代码的表,比如你的数据库中有 a_user,b_user,b_profile,三张表,你只需要对b_开头的表生成代码,那么就填
所以我是这样写的
(5/8) ORGANISE YOUR SUBPACKAGES
这部分你可以完全删除,不配置,那么,所有生成的代码都会在part3
假设
1.数据库连接部分,这是必填的。
2.如果没有用到自增长键,自增长键这部分可以略过,(如果你还不知道怎么填自增长键部分,可以先用一张没有自增长键的表来尝试,把这部分先跳过,循序渐进)
如果其他都不填,你已经可以开始代码了。
我觉得你可以开始试试了。
配置好
就开始连接数据库、生成代码、编译出class,最后生成的java代码在
打开生成的代码,你会发现对应每张表都生成了每张表对应的
如下图:
官网地址:https://sourceforge.net/projects/sql2java
这是一个轻量级的java code generator.可以根据你的要求,对数据库中指定的table/view生成全套的java bean 对象以及针对这张表常用数据库操作(增/删/改/查),支持事务,有了它,关于数据库操作的相关代码你基本上就不需要写了.
当时我还挺奇怪,那时已经有hibernate等一大批ORM工具了,为什么老板选择用sql2java这么个不知名的工具来生成数据库操作代码。老板是个在硅谷做过oracle高管的海归创业人人士,他给我的理由是这个工具比较轻量级,就这么一句简单的话。
事实上当时我也没什么选择权,老板让用什么就用什么呗。在没有中文说明,网上找不到教程的情况,硬头头皮仅靠看软件自带的readme.txt和注释,把这个工具玩转了,到后来随着开发的越来越深入,我对sql2java也越发了解.越发体会到老板那句评价的含义,果然是个轻量级的工具。
相比hibernate和很多其他的ORM工具,它确实太简陋了,连个命令行界面都没有,更别提GUI界面了。
对于刚入门的人来说,它确实不太友好:所有的配置都需要手工修改一个properties文件,要是不小心改错了,它可能就抛出一堆异常。
而且它一次查询只能对单表操作,不能支持复杂的跨表查询(join,union)。
但缺点往往可以变成优点:
这个工具很小,生成代码的人机界面是一个ant脚本(build.xm),执行脚本,就自动生成所有的数据库相关代码并编译,特别适合ant自动化脚本编译。
框架搭得很好,java核心代码很少,控制代码生成的主要是velocity模板,熟悉velocity后完全可以根据自己的需要自由定制模板,增加/修改生成数据库操作代码。入门可能麻烦点,但它给了开发者一个更自由更广阔施展空间,你完全可以做出一个定制化的ORM工具。
就算它不支持跨表查询,你也可以自己修改模板定制一个。
但是
闪开!我要说但是啦!但是这个开源工具早已经不再维护了,最后一个release版本是08年的。可以说它已经死了,真正的老古董了。
如果还有兴趣了解它,那我很佩服你。
虽然它已经不再更新了,但就最后一个release版本而言,也已经很稳定了,并且已经支持不少数据库(oracle,mysql,db2,mssql,hsql,derby,postgresql),对我而言主要是用mysql,oracle,drby,足够用了,加上它生成的代码很稳定也很漂亮。用久了,熟悉了,更是放不下。
the lastest release version:sql2java-2-6-7.zip
DEMO
关于它的基本入门,我还是不多写了,从上面的下载zip包解压到本地,打开doc/index.html,你能看一个非常简单的入门说明,仔细看看这个说明,你就能跑通它的一个demo。软件运行环境要求
java (1.6以上)
apache ant (我是用1.8以上的版本)
如何安装java和ant不是本文的讨论范围
入门
配置sql2java.properties
如果你已经跑通了sql2java提供的demo,那么你肯定已经急切的想用sql2java为自己的数据库表生成java代码了。这个吧,也不难,关于生成java代码的所有参数都定义在
src/config/sql2java.properties文件中,只要搞懂了主要的几个参数,就算OK了。
这也是本文的主要目的:介绍
sql2java.properties中主要的参数意义。
请打开
src/config/sql2java.properties文件,下面从上到下挑几个主要的参数逐一说明
那么其他参数呢?不用了解么?
等你能正常生成自己的代码后,你自然有兴趣看sql2java.properties文件中的英文注释,其实那些英文描述得很清楚,仔细看了自然都明白了。
进一步如果你完全熟悉了它的结构,你可以自己改模板,生成自己需要的方法和类
part1:配置数据库访问
打开sql2java.properties文件,你首先看到的就是下面这部分(line 8-79)
(1/8) CONFIGURE YOUR DATABASE ACCESS
顾名思义,这开始70多行都是用配置数据库访问参数的,表被这70行代码吓住,仔细看,是分别针对7种数据库定义的数据库连接。
第一个是默认的hsql数据库,其他6种(oracle,mysql….)数据库的参数都是
#注释的。
所以在这部分,你要先注释掉hsql部分参数,然后根据自己的数据库类型,打开对应的注释。
比如我用oracle,所以我对oracle部分做如下修改
# you need to provide the classes12.jar jdbc.type=oracle # 我用ojdbc.jar连接oracle,这里填jdbc driver 的class name # 要把ojdbc.jar复制到sql2java/lib目录下 jdbc.driver=oracle.jdbc.OracleDriver # 数据库连接字符串 jdbc.url=jdbc:oracle:thin:@10.110.206.152:1521:educacio jdbc.username=e13_poe jdbc.password=313p03 # 是否打开,根据实际情况设置 #jdbc.schema=E13_POE #retrieving remarks on oracle is very long ... do you need it right now ? jdbc.oracle.retrieve.remarks=false
part2:配置自增长键
如果你的表中用到了自增长键,就要配置第二部分(line 80-155)(2/8) CONFIGURE RETRIEVAL OF AUTO GENERATED KEY
关于自增长键是怎么回事儿,不是本文说明的范围,请自行脑补。
这部分也是对应了不同类型的数据库有不同的参数,默认是hsql.如果你有自增长键,就关掉hsql,打开对应数据库的部分注释。
part3:生成代码
第三部分是关于生成代码的控制参数(line 158-188)(3/8) GENERATED SOURCE CODE
这部分有两个重要的参数需要说明:
codewriter.package生成java代码的包名,这个你肯定希望改成自己的package,而不是使用默认值。
codewriter.destdir默认就是src,可以不改,这个src是指
sql2jav2/src文件夹
其他参数入门阶段统统不要改
part4:选择table/view和模板
第四部分还是关于代码的进一步控制参数(line 190-230)(4/8) FILTER OUT CERTAIN TABLES
jdbc.tabletypes是指要对哪些类型的对象生成代码,默认是table,view,可以不修改。如果你不希望对view(视图)生成代码,就只填talbe
jdbc.tablenamepattern 可以定义一个过滤器,根据名称来选择要生成代码的表,比如你的数据库中有 a_user,b_user,b_profile,三张表,你只需要对b_开头的表生成代码,那么就填
b_%,
%在这里代表通配符。默认值
%,就是指所有的表。
tables.include和
tables.exclude同样也是起过滤器的作用,可以在这里用空格分隔指定要包含的表或要排除的表。
template.folder开头的两个参数用来控制生成代码的模板类别(appfuse ibatis java java5 cache spdao factory db web),这些类别分别代表什么含义,这部分在properties中有比较详细的说明。别的先不用管,你只需要知道java和java5是用来生成java代码的。java5是指java1.5以上版本。这部分我只需要用到java5.
所以我是这样写的
template.folder.exclude= template.folder.include=java5
part5:package配置
在第五部分是进一步配置不同的表生成的代码的包名 (line 232-246)(5/8) ORGANISE YOUR SUBPACKAGES
这部分你可以完全删除,不配置,那么,所有生成的代码都会在part3
codewriter.package指定的包名下。如果你希望不同的table在不同的子包名下面,还以 b_user,b_profile两张表举例,可以如下配置:
subpackage.1.name=user subpackage.1.tables=b_user subpackage.2.name=profile subpackage.2.tables=b_profile
假设
codewriter.package设置为
my.package,那么b_user表生成的代码就会在
my.package.user下,同理b_profile的代码在
my.package.profile下
part6
这部分可以略过,因为我从也从来没有用过。。。part7
可以使用默认值,不必修改part8
可以使用默认值,不必修改总结
好了所有的重要参数都介绍完了,仔细想想,刚开始要填的参数也没几个嘛1.数据库连接部分,这是必填的。
2.如果没有用到自增长键,自增长键这部分可以略过,(如果你还不知道怎么填自增长键部分,可以先用一张没有自增长键的表来尝试,把这部分先跳过,循序渐进)
如果其他都不填,你已经可以开始代码了。
我觉得你可以开始试试了。
配置好
sql2java.properties后, 生成代码很简单,命令行下执行ant脚本:
d:\sql2java> ant compile
就开始连接数据库、生成代码、编译出class,最后生成的java代码在
sql2java/src/java下面。
打开生成的代码,你会发现对应每张表都生成了每张表对应的
<TableName>Manager类,提供了完整的数据库操作方法(增/删/改/查),调用这些方法,你不需要写任何SQL语句。
如下图:
相关文章推荐
- BeetlSql 单表查询工具(Query)使用说明
- 看了老赵快速反射顺便提到了一个DynamicUtilites反射工具,我就举个小例子说明下怎么使用它
- 简单说明什么是递归?什么情况会使用?并使用Java实现一个简单的递归程序。
- 一个WinForm程序配置信息的简单模型和维护工具——使用说明
- Java Security:keytool工具使用说明
- 介绍一个GWT的网站 和 decode javascript.encode using java +FCKEditor 在 jsp中的使用说明
- Spring - Java/J2EE Application Framework 应用框架 第 11 章 使用ORM工具进行数据访问
- JAVA - Sql解析工具fdb-sql-parser简单使用
- 使用轻量级JAVA 爬虫Gecco工具抓取新闻DEMO
- SQL转换成FetchXML的工具网站http://www.sql2fetchxml.com 使用说明
- 在HTML5 Web SQL中使用ORM工具 - 前端开发 - e800
- 即使用ADO.NET,也要轻量级动态生成更新SQL,比Ormlite性能更高
- 使用 Java 开源工具建立一个灵活的搜索引擎
- 使用java或C++,设计一个画图板(类似于windows系统自带的画图工具)。
- 使用 Java 开源工具建立一个灵活的搜索引擎
- ApkToolPlus 是一个可视化的跨平台 apk 分析工具,使用 java 语言开发的一个桌面应用。
- oracle 数据库的管理工具 PL/SQL_Developer 的简易使用 与Java 连接并查询显示出数据
- ETL工具kettle与java结合使用程序生成一个简单的转化文件
- 使用轻量级JAVA 爬虫Gecco工具抓取新闻DEMO
- 把Notepad++打造成一个轻量级的Java学习工具