声明驱动的开发

今天,大多数方法都使用面向模型的方法。
它可以是域驱动的或逆向工程的,一个共同点是它们从模型的静态定义开始。 对于域驱动,它是开发语言本身发布的域。 对于逆向工程,它从静态模型结构定义(例如xsd,wsdl,数据库架构)开始。
语句驱动的开发专注于开发人员可以在某些模型上运行的动作,而不是模型本身。
示例:一条select语句获取具有group-administrator-role用户可以管理的所有组成员。
在这里,该语句可以具体化为以sql为实现的搜索查询。
对于开发人员而言,重要的是查询及其I / O并不是真正的底层模型,而是装饰技术。
为什么以陈述驱动发展
几篇文章和一些限制使我认为,声明驱动的方法可以为开发人员提供灵活,快速的替代方法。
通常,在定义了诸如ORM之类的抽象模型之后,用户必须编写其UC语句。 这意味着仍然需要执行第二步。
该模型有时/通常是过大的。 作为开发人员,您无需在提高生产率之前就了解整个模型的复杂性。
标准限制
就像在JOOQ 文章中有关功能和存储过程的文章中所述,在输入供应商特定的细节时,提取元信息可能会遇到一些限制。
本机DSL
有一种趋势表明,SQL是您唯一需要的DSL。
为什么要用限制其功能的其他技术抽象包装它?
再见域对象
…欢迎DTO。
I / O本质上是DTO(为什么它们应该是持久层的确切反映?)。 这种情况只是一个特定的例外。
此异常被多个应用程序/框架广泛使用(可重用性强但有局限性)。
备注:本文不涉及“持久辩论” DO与DTO。 SDD只是带来了一种新方法,该方法不排除但补充了DDD / Rev-Eng。  
具体来说
MinuteProject版本0.8.1+(2012年5月中旬)将提供声明驱动开发工具。
  • 用户将只关注一条SQL语句。
  • 输出将通过执行来推断。
  • 输入将易于配置。
这是一个简单的配置。 语句模型是新节点。
<model>
    ...
      <statement-model>
           <queries>
               <query name="get address street">
                  <query-body><value><![CDATA[select * from address where addressid > ?]]></value></query-body>
                  <query-params>
                      <query-param name="identifier_Address" is-mandatory="false" type="INT" sample="1"></query-param>
                  </query-params>
               </query>
           </queries>
      </statement-model>
  </model>
此配置应足以获取:
  • 输入豆
  • 输出豆
  • 输出列表bean
  • REST CXF的所有技术装饰:
    • 具有REST路径的资源bean
    • 弹簧配置
    • 本地DAO
演示将在Minuteproject的下一版本(0.8.1)中发布。
与REST集成几乎是语句驱动的:基本上,您只需要知道URL及其I / O。
结论
 
  • 使用SDD时,您可以专注于语句和I / O。
  • Minuteproject简化了其余部分(技术包装)。
参考: minuteproject博客博客上的JCG合作伙伴 Florian Adler发表了声明驱动的开发报告

翻译自: https://www.javacodegeeks.com/2012/05/statement-driven-development.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值