Butler - TOP(Table-Oriented Programming)面向表编程的数据库开发框架

Butler framework is a table-oriented java object model on top of JDBC that makes database programming easier. It also has a set of database aware swing components and a JSP tag library.

http://sourceforge.net/projects/butler/

Butler database framework


Butler framework is a object model on top of JDBC that models tables, records, foreign keys, etc. It has functionallity for querying the database, updating records, and viewing database metadata.

The purpose of Butler is to make it easier for application developers to write code that retrieves and updates data in databases. It is not intended to be a database administration tool.

Butler also has a number of user interface components, both for swing and a tag library for JSP. The idea is to provide user interface components for querying and editing database data. Theese components can be connected together and used in client applications.

原文:The power of table-oriented programming
http://www.javaworld.com/javaworld/jw-10-2004/jw-1018-butler.html

Resources


The Butler database framework:
http://butler.sourceforge.net

More information about table-oriented programming:
http://www.geocities.com/tablizer/top.htm

Hibernate O/R mapping framework:
http://www.hibernate.org

Java Data Objects (JDO):
http://java.sun.com/products/jdo

Enterprise JavaBeans (EJB):
http://java.sun.com/products/ejb

JDesktop Network Components (JDNC):
https://jdnc.dev.java.net
Another library with data-aware swing components (SwingSet):
http://swingset.sf.net

Formatting objects:
http://www.w3.org/TR/xsl/slice6.htmlfo-section

For an introduction to Hibernate read "Get Started with Hibernate," Christian Bauer and Gavin King (JavaWorld, October 2004):
http://www.javaworld.com/javaworld/jw-10-2004/jw-1018-hibernate.html

For more articles on JDBC, browse the Java Database Connectivity section of JavaWorld's Topical Index:
http://www.javaworld.com/channel_content/jw-jdbc-index.shtml

For more articles on Java development tools, browse the Development Tools section of JavaWorld's Topical Index:
http://www.javaworld.com/channel_content/jw-tools-index.shtml

好,这样可以提供界面层相当强大的数据库操作能力,而不必在页面上用户输入SQL语句实现查询了。

PhpMyAdmin是一个好的典型,好像J2EE的MySQL的PhpMyAdmin正在研发中,期望赶快出台。

链接:
面向表格编程的力量――Butler介绍(翻译)http://dev.csdn.net/develop/article/45/45564.shtm
从数据库元数据生成Web应用程序http://dev2dev.bea.com.cn/techdoc/wlworkshop/200408226.html
以“分层”为关键字搜索网页http://www.blogdriver.com/icicle/

在实际工作中确实有这样的感触,简单的事情可以简单做:
OA/MIS类数据密集型应用系统的开发,CRUD操作很多,如果
在其中非得强调一个对象层(领域逻辑)就必须写很多的get/set方法,为对象属性设值,然后由某类O/R mapping工具将其映射存储到数据库中,虽然有一些工具可以帮助(比如Commons-BeanUtil)简化工作,但仍感觉横加一层让人很不舒服。


在早些时候,我也曾这样理解这个问题:
认为这样从系统分层的角度来说不是更加清晰了吗?整个系统的层次结果如下所示:
表示层 -> facade(类似于无状态的SessionBean) -> entity(业务实体)
struts -> facade class -> hibernate
但是后来工程做多了(CRUD做多了)以后觉得某类应用(OA/MIS)的大部分的“业务逻辑”都是和数据模型紧密关联的,或者说存在一一的映射关系(或者说对应关系)。系统的大部分功能都是可以转化为数据库操作(sql命令),再复杂一点的可能在数据库操作之上增加一个适配器(facade),做一些数据格式(java格式到数据库格式,或相反)或业务规则(跟应用相关的一些规则)方面的适配工作。

因为客户不会用sql的关系或者sql用起来有一些复杂性的关系,所以我们的系统要简化客户的工作-为客户提供一个数据视图,当然这个视图要用html来展现(并符合用户的审美观点),当然这个视图要有权限(领导看的报表闲杂人等是看不到的),当然这个视图要符合客户的操作习惯或业务特点,等等。。。

这一切都和数据模型关联的那么紧密,domain Object在哪里?业务逻辑在哪里?
对象模型只是数据模型的一个很直接的映射(数据库中的一对一/一对多映射到对象中的聚合),其实绝大多数情况下也没用到那么复杂的映射。
毫无疑问,面向对象是为解决复杂问题和简化解决问题而存在的,相对于过程没有有效解决的问题面向对象提供了很好的解决方案
所以我一直在追求对象:) 可是我做的项目又都是MIS类的,可悲呀,我现在还不知对象其中的三味。
以前每当我看到面向对象书籍,设计模式,使用框架(开源的/公司的)的时候我总是跃跃欲试,但每每总是无用武之地
现在我想的是如何利用元数据(schema)和代码生成工具(Middlegen)来自动生成,写代码的时候总是觉得工具化程度特别高。

MIS应用简单的理解起来就是挂着权限的CRUD?

好,不过这些文章又给那些忙于找框架的人又增加了些幻想,其实,它的思想很简单的,可能我们大家原来都用过一部分,只不过自己没提出面向表编程的概念,不过,我给我们公司的同事们强调的是“要牢固树立起为围绕数据层工作的坐标感,方向感”思想是一样的。也就是说数据层的规范,对简化编程将会起到极大的作用。

也就是说数据层的规范,其他层的协作,对简化编程将会起到极大的作用。