巧用MBean 实现大挪移

来源:互联网 发布:sql三大范式 编辑:程序博客网 时间:2024/05/05 09:11
上一篇文章里提到了MBean的使用方法,通过控制MBean的反射实现了数据的保存和提取。那么今天笔者试着利用反射机制实现MBean向Domino平台之外的数据库产品保存数据(提取的方式是一样的)。

在开始之前先介绍下应用环境,服务器是Domino853平台和MySQL5.7.16,开发工具是Designer9.01。首先用在Domino服务器上部署MySQL的JDBC驱动,具体方法就不讲了。在这里我们可以把Domino服务器看成一个应用服务器,它不参与数据存储的事务。那么可以把Domino服务拆分成两部分:应用服务器和数据服务器。如下图:


从中可以看出,将应用服务独立出来后,Domino的部署会更加简洁。不过这不是本文的重点。Domino服务器不具有J2ee容器,因此在它上边运行的JDBC一般都是直连或者使用单例模式运行的连接池软件产品,而基于JNDI接口的连接池是运行不了的。笔者选择使用单例模式连接池。


回到正题,本文还是延用上一篇文章中开发的数据库,还是那个MBean:DocumentBean,在里边增加几个属性,变成这样:

       private String form = "";        private String fullname = "";        private String subject = "";l        private String title ="";        private String uuid = "";        private int num = 1;        private boolean saved = true;
同时在MySQL中建立一个新表(注意,要与MBean的属性类型一致):


然后在DocumentControl类中新增方法saveToSQL(DocumentBean docbean),在这个方法中利用反射机制获取类的属性及属性值,构建SQL语句写入MySQL数据库中。这样实现的好处是:MBean与RDB关系表一一映射,无需编写SQL语句,全程数据的存取都无需关注SQL的使用都在内部封装。在使用中是不是很方便那?
在完成了上述的修改后,我们实际运行一下。在数据库中插入多条记录,只需要调用saveToSQL()方法,不需要自己去编写任何SQL语句了。


这里还要提到一点,SQL语句是动态生成的。那也就是说,随着MBean的属性或增或减或改,都没有关系,程序会自动构建所需的SQL代码。同理,推而广之,SELECT 、UPDATE、DELETE都可以实现。当然目前还没涉及到多表联合,那将是下一个话题了。
以此类推,如果想将数据保存到Domino数据库(已实现)、RDB数据库(已实现)或NOSQL型数据库中只需要开发对应的数据接口即可,数据由MBean或List型数据承载即可实现。

0 0
原创粉丝点击