基于Java富客户端的数据库应用难于开发,难在哪里:界面开发是个大麻烦,如何快速方便的开发界面?
如何处理界面的数据绑定?如何方便的与服务器端通讯?如何部署客户端?这些基本的问题阻碍了Java富客户端数据库应用的推广,soyframework的出现对这些问题和企业应用的各个方面问题给出了完善的解决方案。
1.如何快速方便的开发界面?
使用awt/swing来开发界面是比较麻烦的一件事情,基本上有两种方法:
a.手工编写代码设定布局管理器和绘制界面,这就要求开发人员对Swing的布局管理机制和控件非常的熟悉,难度较大。b.使用IDE提供的辅助设计界面的功能,主流IDE如:JBuilder,Eclipse的VE插件,NetBeans都有提供,其中NetBeans的界面设计功能无疑是最好的,但会生成大量的绘制界面代码,用户基本不能维护,只能靠NetBeans来维护。
soyframework摒弃传统的界面开发方式,使用组件化的方法开发界面,客户端提供大量的表示层组件和控件,极大的方便了界面的开发,用户只需使用框架提供的组件和调用API,框架会自动布局控件绘制界面。用户无需依靠任何插件在快速开发的同时不失灵活性。
表单开发的代码示例:
ModelForm form = new ModelForm(Orders.class);//构造订单表单
String hqlCS = "from ChainStore c where c.code like ?";
//往表单加入文本控件,维护流水号
form.appendWidget(new Text(0,"serialNO").setReadOnly(true));
//往表单加入外键控件,维护所属门店
form.appendWidget(new Foreign(0,"chainStore",
hqlCS,"code,name","name"));
//往表单加入日期时间控件,维护最迟配送时间
form.appendWidget(new DateTime(0,"deliveryTime",true));
form.appendWidget(new Text(1,"customerName",true));
form.appendWidget(new Text(1,"customerAddress",true));
form.appendWidget(new Text(1,"customerPhone",true));
// 往表单加入下拉框,维护订单状态
form.appendWidget(new List(2,"orderState",
OrderState.values(),true));
//往表单加入数字控件,维护重量体积
form.appendWidget(new Decimal(2,"quantity"));
form.appendWidget(new Decimal(2,"weight"));
以上代码将生成如下表单:
表格开发的代码示例:
BaseHqlTable table = new BaseHqlTable(HqlTablepage.this, Orders.class) {
//配置表格按钮动作
@Override
protected BaseTableAction[] getAddationalActions() {
return null;
}
//指定表格查询的HQL语句,将订单按照流水号升序排列
@Override
public String getHql() {
return "FROM Orders o ORDER BY o.serialNO ASC";
}
//配置需在表格中显示的订单的属性
@Override
public Column[] getColumns() {
return new Column[]{
createColumn("serialNO"),
createColumn("createdUser"),
createColumn("customerName"),
//订单状态列,使用枚举格式化器
createColumn("orderState",new
Formatter.getEnumFormat(OrderState.values())),
createColumn("quantity"),
createColumn("weight"),
createColumn("volumn"),
createColumn("chainStore.name"),
//生效日期,使用日期格式化器
createColumn("activedDate",
Formatter.getDateFormat()),
//最迟配送时间,使用日期时间格式化器
createColumn("deliveryTime",
Formatter.getDatetimeFormat()),
createColumn("deliveried"),
createColumn("remarks"),
};
}
};
table.showDefaultButton = false;
table.showScrollBar = true;
以上代码将生成如下表格:
2.如何处理界面的数据绑定?
传统使用PB,Delphi,VB等工具在开发数据库应用时如果想插入一条记录,无非是千篇一律的遍历表单中所有的控件获得最终用户的输入,拼接SQL语句,在客户端直接连接数据库,执行SQL语句,修改记录时需要将数据查询出来然后将数据绑定到对应的控件中。使用java开发也不例外。
soyframework提出新解:soyframework分为服务器端和客户端两部分,服务器端使用Spring+hibernate的轻量级架构,在客户端只需调用IModel ormMappingModel = ModelForm.triggerCommit()将表单的输入值绑定到业务对象(ORM映射对象)中,调用Server.store(ormMappingModel)即可将业务对象序列化到服务器端保存。修改时调用ModelForm.bindModel(IModel ormMappingModel)将业务对象轻松绑定到表单进行修改。极大的方便了数据绑定。
3.如何方便的与服务器端通讯?
soyframework底层使用Spring极力推荐的httpinvoker来远程调用服务器端方法,经soyframework封装后在客户端调用服务器端方法如同调用本地方法。
4.如何部署客户端?
soyframework使用java web start来启动客户端,启动客户端时自动检测客户端是否安装JRE,如果没有安装会自动为客户端下载并安装JRE客户端。需升级客户端时只需在服务器端将客户端的依赖包更新,客户端便会自动更新,尽量做到客户端的零部署。
以上问题的解决为Java富客户端的数据库应用扫清了障碍,但是一个完整的企业应用框架需要解决的问题远不止这些,表现层开发,业务逻辑开发,报表,权限,日志,国际化,部署等一个都不能少,而这一切soyframework都给出了完善的解决方案。
Java富客户端企业应用框架在线演示中心:
http://www.soyframework.com