如今主流JEE系统的开发框架中,通常显示层使用MVC框架,中间业务逻辑层使用spring,持久层采用hibernate/JPA.这种组成几乎是毫无争议的典型架构体系,但若我们将这三个组成部分完全从我们脑海中清楚,以空杯的心态来看JEE系统的开发,我们就很容易地发现我走弯路了。IE浏览器把form表单中的所有元素以key-value方式传到后台,逻辑处理会把这些元素做相应的修改,然后存到数据库中,主流数据库是以二维表存储方式,二维表的每一条记录其实就是多个key-value。既然数据的起始端和结束端都是key-value,那么为什么我要在中间加入那么多Javabean呢(我这里并没有说不要JavaBean之类的话),如果JavaBean少一些系统开发是不是应该更快一些,维护更方便一些呢?再看看这个典型架构体系,数据通常是这样交互:formàkey-valueàformBeanàentityBeanàDB,第一箭头是IE完成,第二个是MVC框架完成,第三个就是spring处理业务逻辑时完成,第四个是hibernate/JPA完成。开发人员会经常发现formbean和entityBean很多属性是相同,存储时要做对拷,很明显有悖于复用。而产生entityBean元凶是hibernate/JPA,它以习惯性的面向对象的思想,以对象持久化封装了一组原子数据(key-value)的存储。其实持久化了东西就是很多属性的集合,即key-value的集合。entityBean是一个类,具有名称,要单纯比一组key-value更加形象。要是给这组key-value也起个名这点优势也没了;再说跨数据库,在现实开发中真正跨数据库的不太多,如果都采用JDBC+标准SQL也同样可以跨数据库;因使用它增加的学习成本,开发成本,维护成本已经覆盖了它的形象优势。
我是想提出一种基于key-value的持久方式,没有学习曲线,大大提高开发效率,降低维护成本。这就是我开发的基于key-value持久方式的Thin,之所以起这个名字主要是这个持久框架很纤薄。
以下是thin与hibernate差异对比。
Thin 的设计思想来源经验,不少公司都有给出查询SQL返回一个List<String,Map<String,Object>>的方法,用于执行查询,既然有查询为什么不写出增删改的方法呢,于是Thin就诞生了,核心思想是定义了BeanTable的对象来虚拟化数据库中的表,通过操作BeanTable来操作数据库。这种直接操作数据库方式视乎背离OO的思想,其实也没有,表也是一个对象,hibernate的Entity,约束了生产力。
Thin简单到你只需要看几测试类就可以灵活运用,无配置文件,也没有用到任何自定义注解,用稍加修改就可以成为自己东西。
推荐看三个类TestBeanTable,BeanTable,DBAccesser
- 大小: 15.3 KB
分享到:
相关推荐
【标题】"vben-admin-thin-next-main.zip" 指的是一个压缩包文件,其中包含了一个名为 "vben-admin-thin-next-main" 的项目或应用。从名称来看,这很可能是某个基于前端技术栈构建的管理后台模板,特别是与Vue.js...
c3p0-oracle-thin-extras-0.9.2.1
c3p0-oracle-thin-extras-0.9.1.2.jarc3p0-oracle-thin-extras-0.9.1.2.jarc3p0-oracle-thin-extras-0.9.1.2.jar
c3p0-0.9.5.3.bin.tgz的lib包,含有此c3p0-oracle-thin-extras-0.9.5.3.jar文件。
c3p0-0.9.5.5.bin.tgz的lib包,含有此c3p0-oracle-thin-extras-0.9.5.5.jar文件。
c3p0数据库连接池所需jar包,c3p0数据库连接池所需jar包c3p0-oracle-thin-extras-0.9.1.2、c3p0-0.9.1.2.jar、c3p0-0.9.1.2-jdk1.3.jar 1、首先在项目下创建一个文件夹,保存我们的jar包。在项目名上右击,依次...
c3p0-0.9.5.4.bin.tgz的lib包,含有此c3p0-oracle-thin-extras-0.9.5.4.jar文件。
后台模板-Thin-Admin-Final-HTML.zip
Thin-Plate-Spline (TPS) 运动模型是一种在图像处理和计算机视觉领域广泛应用的变形技术。这种模型主要用于描述物体或图像在空间中的非线性运动,它能够捕捉复杂的几何变化,尤其适用于处理连续、平滑的表面变形。在...
jar包,亲测可用
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
HelveticaNeue-Thin的印刷字体
本资料“thin-bed-analysis.rar”包含了关于地震调谐、地震分辨率、地震模型、薄层分辨率和薄层模型的相关知识,让我们深入探讨这些概念。 首先,地震调谐是指在地震波遇到不同速度的地层界面时,由于反射和干涉...
Slim-Flash, thin框架 Flash 消息服务提供程序 框架 Flash 消息 这里存储库包含一个瘦框架 Flash 消息服务提供程序。 这样可以定义仅从当前请求到下一个请求的暂时消息。安装通过编辑器$ composer require slim/...
Thin Admin Template 后台模板(新鲜出炉国外网站19美金刚买的)
实现thin plate warp功能,matlab环境下。
Vue vben管理员 English | 介绍 Vue Vben Admin是一个免费的开源中端和后端模板。 使用最新的vue3 , vite2 , TypeScript和其他主流技术开发,开箱即用的中端和后端前端解决方案也可用于学习参考。...
【标题】"梅捷thin h110-aio 魔改bios" 涉及的知识点主要集中在主板BIOS的升级与优化上,特别是针对梅捷(Soyo)品牌的 Thin Mini ITX 规格的H110主板。这款主板在原厂状态下可能不支持某些处理器,但通过“魔改”...
它基于距离场,使得变形更加平滑和自然,减少了图像失真。 在Python和PyTorch中实现TPS-STN,首先需要定义TPS变换的数学公式,包括控制点(control points)和权重系数。控制点决定了变形的方向和程度,而权重系数...
jar包,亲测可用