摘要: 文章《Wicket1.3中Class热加载--使用篇》的姐妹篇。
介绍Wicket1.3中如何实现类的热加载功能,从而在修改类(包括添加或者删除Field,Method)时,无须重新启动服务器,即可生效。
阅读全文
摘要: 介绍如何使用Wicket1.3的类热加载功能,从而在修改类(包括添加或者删除Field,Method)时,无须重新启动服务器,即可生效。从而提高Wicket开发效率。
阅读全文
Aquarius Orm Studio发布正式0.1版本,可以通过下面地址访问
http://orm.aquatool.org/nl/zh/CN/index.html
下面是它的基本功能介绍
- 数据库正向建模(支持数据表,存储过程,视图),并生成相关DDL
- 数据库反向工程,支持从数据库导入数据表,存储过程,视图等数据库元素
- 支持多数据平台,包括Oracle,DB2,MySql,MsSql(支持2005),Sybase,PostgreSql等
- 生成测试数据,可以根据数据库模型生成测试数据,方便进行单元测试。
- 生成相应ORM代码及配置文件,支持Hibernate3,OJB,IBatis及OpenJPA
- 支持多国语言,包括中文(简体,台湾繁体,香港繁体),英文,日文(谢谢Judy.Chang的日文翻译)
- 支持生成Html格式的文档,用来方便管理和归类
- 支持使用Velocity模板生成多种类型的文件
它支持Eclipse3.2,Eclipse3.3,Eclipse3.4
在网站可以下相应的All-In-One版本(包含WTP),也可以下载相应的RCP版本或者是相应插件安装包
还可以通过
http://orm.aquatool.org/nl/download/update 在级升级
源代码正在申请Google的代码库,将于近期放出。
开源协议我还在考虑中,但个人使用肯定是永远免费。
如果有问题,可以发站内消息或者直接发Email到wl_95421@yahoo.com.cn与我联系
下载地址
(重要提示:如果安装不成功,尝试将feature文件夹删掉)
文件比较大,大概有近20M,使用Zip压缩。
现在发布的是Beta版,SourceForge上面的空间正在申请。
发布的版本,支持Eclipse3.2和Eclipse3.3,需要GEF插件,可以在1.4及1.5下运行(我只测试了Sun JDK1.4和JDK1.5的三个版本,并不保证所有的JDK都能运行)。
RCP版本正整理中,国庆前发布。
如果有问题,请留言
以下是工具的介绍
Aquarius ORM Studio介绍
从事软件开发多年,感觉数据库在整个软件开发过程中扮演一个不可或缺的角色。一旦一个业务项目进入立项阶段,需要支持哪些数据库平台,如何使用该种数据库平台都将成为架构师需要考虑的内容,对于一般的开发人员,则可能根据需要建立各种数据表,还可能需要通过反向工程来了解现有数据库的架构,随着ORM工具的流行,程序员还需要将数据表映射到类上,并保证两者间的同步,过去几年从事相应工作的经验告诉我,这既不是一个轻松的事情,更不是一件令人感觉愉快的事情。同时市场上有大量优秀的数据库工具,从建模到分析,还有ORM,但可惜的是,大部分优秀的工具都不是免费的,就像最有名的PowerDesigner,其价格令我咋舌。象 PowerDesigner这么强大的工具,我只能用到其中一部分功能,却要付出所有的价格,而且功能却没有满足的我的需要。
所以我萌生了根据自己的需求来开发一个数据库 工具的想法,并在接下来的两年中付诸实施。这个工具我称为Aquarius Orm Studio,Aquarius是水瓶座,我的星座,ORM是指这个工具的一个重要功能,Studio是个流行词。
这个工具可以完成以下功能:
数据库正向建模(支持数据表,存储过程,视图),并生成相关DDL
数据库反向工程,支持从数据库导入数据表,存储过程,视图等数据库元素
支持多数据平台,包括Oracle,DB2,MySql,MsSql,Sybase,PostgreSql等
生成测试数据,可以根据数据库模型生成测试数据,方便进行单元测试。
生成相应ORM代码及配置文件,支持Hibernate3,OJB,IBatis及OpenJPA
支持多国语言,包括中文(简体,台湾繁体,香港繁体),英文,日文(谢谢Judy.Chang的日文翻译)
我的主要工作是做Eclipse插件开发
在开发中,遇到一些问题,比较麻烦,象转换文件编码,或者替换文件内容(Eclipse的虽然支持正则式,但只能替换成单行字符串,不爽)
所以自己开发一个小插件,放出来,方便大家,支持以下功能:
1、将指定的多个文件,进行编码转换,如GBK->UTF-8(因为我做插件开发的时候,默认是GBK,现在要发布源码,国外的开发人员,就有问题,所以做了这个插件)
2、对指定的多个文件,进行替换,支持多行文本和正则式
3、将指定的多个文件,恢复到最近一个版本。
下载地址
另外做个预告:
本周内将发布我的一个Eclipse数据库插件(约100K行代码),支持以下功能:
1、数据库正向建模(支持数据表,存储过程,视图),并生成相关DDL
2、数据库反向工程,支持从数据库导入数据表,存储过程,视图等数据库元素
3、多数据平台,包括Oracle,DB2,MySql,MsSql,Sybase,PostgreSql等
4、生成测试数据,可以根据数据库模型生成测试数据,方便进行单元测试。
5、生成相应ORM代码及配置文件,支持Hibernate3,OJB,IBatis及OpenJPA
以下是为IBatis生成的XML:
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<sql id="selectUserWhere">
<dynamic prepend="where">
..这里省略部分内容
</isPropertyAvailable>
<isPropertyAvailable prepend="or" property="user_Or_NotNull_State"><![CDATA[STATE_C is not null]]>
</isPropertyAvailable>
</dynamic>
</sql>
<delete id="deleteUser" parameterClass="String"><![CDATA[
Delete From demo.user_t
Where USER_ID=#userId#
]]>
</delete>
<select id="getUserRolesByUser" parameterClass="String" resultMap="userRoleResult"><![CDATA[
Select USER_ID, ROLE_ID from demo.user_role_t
Where USER_ID=#userId#
]]>
</select>
<select id="doCountUser" parameterClass="java.util.Map" resultClass="int"><![CDATA[
Select count(*) From demo.user_t
$Where$ $condition$]]>
</select>
<update id="updateUser" parameterClass="user"><![CDATA[
Update demo.user_t SET USER_ID=#userId# , USER_NAME=#userName# , PASSWORD=#password# , VALID_FROM=#validFrom# , VALID_TO=#validTo# , TITLE=#title# , DESCRIPTION=#description# , DOMAIN_C=#domain# , GROUP_C=#group# , ORDER_C=#order# , STATE_C=#state# Where USER_ID=#userId#
]]>
</update>
<insert id="insertUser" parameterClass="user"><![CDATA[
Insert Into demo.user_t(USER_ID , USER_NAME , PASSWORD , VALID_FROM , VALID_TO , TITLE , DESCRIPTION , DOMAIN_C , GROUP_C , ORDER_C , STATE_C)
Values(#userId# , #userName# , #password# , #validFrom# , #validTo# , #title# , #description# , #domain# , #group# , #order# , #state#)
]]>
</insert>
<select id="doSelectUser" parameterClass="java.util.Map" resultMap="userResult"><![CDATA[
Select USER_ID, USER_NAME, PASSWORD, VALID_FROM, VALID_TO, TITLE, DESCRIPTION, DOMAIN_C, GROUP_C, ORDER_C, STATE_C from demo.user_t
$Where$ $condition$]]>
</select>
<select id="selectUser" parameterClass="java.util.Map" resultMap="userResult"><![CDATA[
Select USER_ID, USER_NAME, PASSWORD, VALID_FROM, VALID_TO, TITLE, DESCRIPTION, DOMAIN_C, GROUP_C, ORDER_C, STATE_C from demo.user_t
]]>
<include refid="selectUserWhere"/>
</select>
<select id="selectUserByID" parameterClass="String" resultMap="userResult"><![CDATA[
Select USER_ID, USER_NAME, PASSWORD, VALID_FROM, VALID_TO, TITLE, DESCRIPTION, DOMAIN_C, GROUP_C, ORDER_C, STATE_C from demo.user_t
Where USER_ID=#userId#
]]>
</select>
<select id="doDeleteUser" parameterClass="java.util.Map"><![CDATA[
Delete From demo.user_t
$Where$ $condition$]]>
</select>
<delete id="deleteUserByID" parameterClass="String"><![CDATA[
Delete From demo.user_t
]]>
<include refid="selectUserWhere"/>
</delete>
</sqlMap>