猪儿笨笨的文档

主要是个人的一些思考和技术文章,还有许多翻译的文档

 

置顶随笔

[置顶]发布基于Eclipse的数据库建模及ORM框架代码自动生成插件(支持Hibernate,Ojb,IBatis等)

下载地址

(重要提示:如果安装不成功,尝试将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的日文翻译)

posted @ 2007-09-07 11:30 猪儿笨笨 阅读(6068) | 评论 (42)编辑 收藏

2008年11月24日

Wicket1.3中Class热加载--揭秘篇

     摘要: 文章《Wicket1.3中Class热加载--使用篇》的姐妹篇。
介绍Wicket1.3中如何实现类的热加载功能,从而在修改类(包括添加或者删除Field,Method)时,无须重新启动服务器,即可生效。  阅读全文

posted @ 2008-11-24 11:44 猪儿笨笨 阅读(1704) | 评论 (3)编辑 收藏

2008年11月22日

Wicket1.3中Class热加载--使用篇

     摘要: 介绍如何使用Wicket1.3的类热加载功能,从而在修改类(包括添加或者删除Field,Method)时,无须重新启动服务器,即可生效。从而提高Wicket开发效率。  阅读全文

posted @ 2008-11-22 22:27 猪儿笨笨 阅读(1957) | 评论 (2)编辑 收藏

2008年7月4日

数据库建模软件Aquarius Orm Studio发布正式版本

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与我联系









posted @ 2008-07-04 16:20 猪儿笨笨 阅读(2341) | 评论 (4)编辑 收藏

2007年11月2日

发布基于Eclipse的数据库建模及ORM框架代码自动生成插件的RC2版,支持配置文件的模板

根据大家的意见,对工具进行了一些修正,添加了以下几个主要的功能

  1. 数据表自关联
  2. 支持配置文件使用模板(模板为Velocity)
  3. 提供了RCP版本
  4. 支持Eclipse3.3
  5. 更新了帮助文档
  6. 支持图片输出
  7. 在Eclipse3.3中支持PNG输出格式

 

我自己已经申请了一个域名,主机在国外,并逐步将自己的开源产品及相应的书放到上面,SVN的建立还在研究中。
大家可以通过http://orm.aquatool.org/nl/zh/CN/来访问这个地址,上面有在线文档,不需要下载软件即可了解软件。
有兴趣的朋友,可以通过下载RCP版本来试用,晚一点我会建立论坛及MailList,希望大家可以提供更多的意见。






posted @ 2007-11-02 16:17 猪儿笨笨 阅读(1285) | 评论 (4)编辑 收藏

2007年9月7日

发布基于Eclipse的数据库建模及ORM框架代码自动生成插件(支持Hibernate,Ojb,IBatis等)

下载地址

(重要提示:如果安装不成功,尝试将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的日文翻译)

posted @ 2007-09-07 11:30 猪儿笨笨 阅读(6068) | 评论 (42)编辑 收藏

发布自己的一个Eclipse小工具插件,并为自己的数据库建模插件作个预告

我的主要工作是做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>

posted @ 2007-09-07 00:19 猪儿笨笨 阅读(1447) | 评论 (8)编辑 收藏

2006年11月28日

《Wicket开发指南一书》在JavaEye提供PDF版本下载

经过一月的时间,在一些朋友的热心帮助下,修正了一些问题,现在发布正式的版本!
希望大家喜欢Wicket这个框架!

因为BlogJava有文件大小的限制,最大2M,所以只好将书籍放在JavaEye上
大家可以通过以下连接下载PDF版本
http://www.javaeye.com/topics/download/9acd675d-bebe-4e33-890f-af9f5f9ef8a2

posted @ 2006-11-28 10:03 猪儿笨笨 阅读(3412) | 评论 (7)编辑 收藏

2006年11月5日

《Wicket开发指南》一书的代码


这里是《Wicket开发指南》一书的代码
已经整理完了
代码与书上基本一致,主要区别在于Page继承自AbstractExamplePage而非WebPage。而且在每个Html页面上多了一个mainNavigation,以提供View Source功能。,方便查看源代码。

这些源代码不再需要额外的付出,任何人都可以下载,当作《Wicket开发指南》一书全文下载不方便的一些补偿吧。

下面是下载地址:
http://gocom.primeton.com/modules/newbb/titleflat_5087_41.htm

posted @ 2006-11-05 19:59 猪儿笨笨 阅读(1822) | 评论 (7)编辑 收藏

2006年11月3日

免费发布《Wicket开发指南》一书(266页)

最近完成了一本关于Wicket的书
感于自己得益于许多开源软件,以及许多的免费书籍,所以这本书也免费开放。
该书266页,约18万字。
现在全部发布在网上,大家可以免费浏览。
我很喜欢Wicket这个框架,也希望有越来越多的开发人员使用这个框架。

我把前两节放在下面作为介绍。
因为书的内容比较多,而且GoCom答应提供空间和论坛,所以我也不好在这里直接上传,请谅解,而且GoCom也答应提供PDF版本下载,我也会在元旦前后更新此书,然后免费提供给所有人员。

你可以在http://gocom.primeton.com/这个地址查看该书(谢谢普元的GoCom提供的空间和论坛)
(感觉有点做广告的嫌疑)

你也可以在这个论坛上提出问题,我会尽快回复
http://gocom.primeton.com/modules/newbb/viewforum41.htm

One World,One Dream。

 

Wicket前生后世篇  
Wicket是什么?简单点说,它就是一个基于Java的Web开发框架,与Struts,WebWork,Tapestry相类似。其特点在于对Html和代码进行了有效的分离(有利于程序员和美工的合作),基于规则的配置(减少了XML等配置文件的使用),学习曲线较低(开发方式与C/S相似),更加易于调试(错误类型比较少容易,而且容易定位)。如果你不对微软并不反感,可以把它看作Java平台上的ASP.NET。
 Wicket现在是Sourceforge上一个非常活跃的项目,开发源码基于Apache协议(也是最宽松,对商业最友好的的源码协议),项目位于http://wicket.sourceforge.net,另外它还有一个独立的域名网站http://www.wicketframework.org/。最新的消息则是,Wicket已经成为Apache孵化器中一个项目,可以通过http://incubator.apache.org/projects/wicket.html来访问。但SourceForge上的网站仍然可以访问。
 Wicket出现时,著名的J2EE网站TSS(即http://www.TheServerSide.com,以后简称TSS),对该项目也进行了讨论,有一段旷日持久的论战(地址:http://www.theserverside.com/news/thread.tss?thread_id=28162:),论战主力当然就是Wicket的主要作者Jonathan Locke和Tapestry的作者Howard Lewis Ship ,争论的内容十分广泛,从URL的格式到系统结构,从扩展性到界面开发,如果有时间的话,我尽量将其中部分内容翻译过来,还是很精彩的。(TSS上很多的讨论都非常精彩,如果英文好的话,建议经常上去看看,国外的牛人就是多啊。有时候我也觉得很奇怪,这些人都不用睡觉的吗,看他们的帖子,完全覆盖了24小时,感觉他们的老板真是宽容啊)。
 Wicket的作者中有几个是原Sun公司Swing小组的开发人员(现在可能大部分已经不是了),因此Wicket的框架中带有浓厚的C/S色彩。而他们的开发计划中,还包括了Swing,Flash平台的支持,也就是说使用Wicket不仅可以可以输出Html,而且可以支持Swing和Flash,不过和朋友经过讨论后,觉得这个计划看起来有一点不切实际,毕竟Html,Swing,Flash之间的差别还是很大,恐怕想要无缝移植,还是有点难度的。单是一个JavaScript,恐怕就够头痛了。
 Wicket带有强烈C/S结构的UI色彩,这一点有助于美工和程序人员的分工,与Delphi的开发方式非常类似(Delphi使用.frm文件保存UI控件的定义,而用.pas文件存储代码,从而对控件进行操作)。Wicket则是使用Html描述UI,并将具有特殊标记的Html元素定义为UI控件,在java文件中则直接使用代码操作这些UI控件,控制其输出及行为,样式等。这一点和Tapestry,以及.NET平台上的ASP.NET极为相似,也怪不得与Tapestry的作者争论了这么久,毕竟两者的用户群有很多的重复。其实从结构上看来,无论是Tapestry,ASP.Net,Wicket估计都借鉴了Applet平台上的WebObjects,还有Delphi。(不要忘了,Delphi的创建者Anders Hejlsberg就是.net框架的架构师,所以C#和Asp.net怎么看都带着Delphi的影子。
 Wicket目前最新的版本是1.2.2版,已经支持了AJAX,但感觉这个框架的发展时间毕竟还是短了一点,尽管设计思想很不错,但还是有许多问题存在的,包括控件的数量,BUG较多等,希望2006年它可以尽快的成熟起来。
 
关于重新发明轮子的争论
 谈到Wicket,恐怕第一个感觉就是在Java的Web开发中又多了一个轮子,这一点国内外的程序员好象都是一样。
 有一个国外的Blog专门写了一篇关于轮子的文章,说明了重复发明轮子的必要性。我个人对于这种轮子是持一种欢迎的态度,因为没有人会去写一段功能完全一样的东东,总是要修正了原有轮子的不足,这样就不能简单当作一种重复。
 即使是功能重复,就不需要轮子了吗?JSP能完成Struts到所有功能,而Tapestry能做到的,Struts也全部可以做到,但Struts,Tapestry就不需要了吗?Struts的MVC结构比JSP更加优秀,在很大程度上减轻了开发人员开发量,而Tapestry基于组件的开发方式,则是开创了一种新的Web开发方式,对于多语言的支持也有了新的方式。以往开发多语言页面时,往往使用properties保存字符串资源,但是页面通常都没有什么变化。而Tapestry可以通过不同的Html为不同的国家指定不同的页面。
 Wicket吸收了Tapestry的一部分内容,但我最喜欢的就是,它是基于规则的,而并非XML配置的方式,这不仅有利于程序员学习,对系统的维护及开发规范都很有效,毕竟XML的编写并不见得就比写一段程序来得更容易。(这里插一句题外话,我觉得XML文件用来表示数据和资源,而不是行为,更不是业务,所以对于XML我只用来存放多语言资源或者用来做数据交换。象Spring这种大量使用XML方式,我并不欣赏,Spring也意识到了这一点,在2.0版本中努力的简化Xml的配置,但是并不尽如人意)。如果使用简单的规则来配置或者管理一个系统,用户就会很容易的查找到自己需要的内容。而通过配置文件,不管这样的一个配置文件的结构如何好,也需要在其中查找自己需要的内容,开发效率肯定要低一些。
 因此对于这种有创新性的轮子,多几个,或许Java世界可以跑得更快一些。
 去年就听说不少Web框架的开发人员要联合起来开一个Web框架,在Yahoo上还有一个讨论组,上去看了一下。但是这个事件对我的第一感觉就是晕,第二感觉就是特别的晕,虽然目前Java世界的Web框架一通混战,但这样一个联盟,所给出的东西很可能是第二个EJB。

posted @ 2006-11-03 11:21 猪儿笨笨 阅读(1921) | 评论 (1)编辑 收藏

仅列出标题  

导航

统计

常用链接

留言簿(18)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜