阅读更多

3顶
0踩

编程语言

原创新闻 Sculptor 1.5.0发布 ,开源工具

2009-02-11 13:59 by 副主编 zly06 评论(0) 有4153人浏览

Sculptor是一个开源的工具,可以适用于领域驱动设计和领域特定语言。
你可以通过文字说明来表达你的设计意图,Sculptor会帮你产生高品质的Java代码和配置。Sculptor关注技术的细节和一些令人厌烦的重复性工作,让你专注于提高更多的业务价值以及更多的乐趣。

Sculptor非常适用于发展中的企业或网络应用程序,可以享受丰富和持续的Domain模型。它的实施基于我们众所周知的框架,如Hibernate 和 Spring。

CRUD GUI的执行有两种形式:

  • 基于Spring Webflow 和JSF的网络应用
  • 基于Eclipse富客户端品台和Spring的富客户端


通过Eric Evans'实战DDD 中的例子,对Sculptor进行介绍。


我们需要一种新的服务,将Cargo从一个地方移动到另一个地方:

Service BookingService {
            @TrackingId bookNewCargo(@UnLocode origin, @UnLocode destination);
        }

        BasicType TrackingId {
            String identifier key;
        }

        BasicType UnLocode {
            String unlocode key
        }

当你为服务手动添加了logic后,Sculptor会为此模型生成一个EJB服务和一个单独的实现。Spring注入依赖和AOP的错误处理也会被产生。


我们需要考虑到一个长期的location对象以及找到次对象的方式:

Service BookingService {
            inject @CargoRepository
            @TrackingId bookNewCargo(@UnLocode origin, @UnLocode destination)
                throws LocationNotFoundException;
                        
            protected findLocation => LocationRepository.find;
        }

        Entity Location {
            not optimisticLocking
            scaffold
            - @UnLocode unLocode key
            String name not changeable
            
            Repository LocationRepository {
                @Location find(@UnLocode unLocode) throws LocationNotFoundException;
                protected findByKeys;
            }
        }


booking的返回应保存到Cargo的实体中:

Entity Cargo {
            - @TrackingId trackingId key
            - @Location origin required
            - @Location destination required
            
            Repository CargoRepository {
                 save;
                 TrackingId nextTrackingId;
            }
        }


再次生成后会有两个持久化对象和Hibernate的映射和库。
最后,我们手动添加Java代码完成booking服务:

public TrackingId bookNewCargo(ServiceContext ctx, UnLocode originCode,
        UnLocode destinationCode) throws LocationNotFoundException {

        TrackingId trackingId = getCargoRepository().nextTrackingId();
        Location origin = findLocation(ctx, originCode);
        Location destination = findLocation(ctx, destinationCode);
        Cargo cargo = new Cargo(trackingId, origin, destination);

        getCargoRepository().save(cargo);
        return cargo.getTrackingId();
    }



Sculptor wiki 上,你会找到更多例子和解释。

 

来自: theserverside
3
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • JAVA开源项目

    Spring Framework 【Java开源 J2EE框架】 Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是...

  • JAVA开源项目[转]

    Spring Framework【Java开源J2EE框架】 Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是...

  • java开源项目大全

    Spring Framework 【Java开源 J2EE框架】 Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构...

  • JAVA开源项目大全

    Spring Framework 【Java开源 J2EE框架】 Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础...

  • java开源项目

    Spring Framework 【Java开源 J2EE框架】Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是...

  • java开源大全

    Spring Framework 【Java开源 J2EE框架】Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是...

  • Java开源项目

    Spring Framework 【Java开源 J2EE框架】 Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础...

  • 后勤智能管理系统-.. (2).pdf

    后勤智能管理系统-.. (2).pdf

  • Markdown.Monster.v2.0.9.0-CRD.rar

    Markdown.Monster.v2.0.9.0-CRD

  • 毕业设计-主成分分析算法Python代码.rar

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。

  • 四川大学期末考试试题(开卷).docx

    四川大学期末考试试题(开卷).docx

  • c#入门之实现计算器源码

    c#入门之实现计算器源码

  • Python项目-游戏源码-10 植物大战僵尸.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

  • 基于ssm的期末考试考务管理系统源代码(完整前后端+mysql+说明文档+LW).zip

    主要需求:3个权限 该系统功能模块主要为三部分,即学生模块、教师模块、管理员模块。 学生模块包括:查看考试安排信息(随机安排就行)、学生 缓考在线申请(教师查看)、在线签订承诺书(学生签字); 教师模块包括:查询监考表、考试违纪学生信息录入; 管理员模块包括:考试时间地点管理、 调整排班信息、信息管理等(主要是增删改查) 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

  • springboot-基于SpringBoot的小型民营加油站管理系统.zip

    springboot-基于SpringBoot的小型民营加油站管理系统.zip

  • framework-all

    framework_all

  • 【Ubuntu】【交叉编译】实现跑马灯并以开发板为服务器通过cgi实现远程控制.html

    【Ubuntu】【交叉编译】实现跑马灯并以开发板为服务器通过cgi实现远程控制.html

  • 基于ssm的学生宿舍管理系统设计与实现源代码(java+jsp+mysql+说明文档+LW).zip

    实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理常用语句管理、常用语句收藏管理、常用语句留言管理、成语学习管理、成语学习收藏管理、成语学习留言管理、字典管理、论坛管理、基础管理、基础收藏管理、基础留言管理、情景学习管理、情景学习收藏管理、情景学习留言管理、诗词学习管理、诗词学习收藏管理、诗词学习留言管理、用户管理、管理员管理等功能。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7

  • RTMPOSE rtmpose-m-2xb64-210e-mpii-256x256-A5000

    RTMPOSE rtmpose-m-2xb64-210e-mpii-256x256-A5000

  • jdk-17.0.4.1

    jdk-17.0.4.1

Global site tag (gtag.js) - Google Analytics