设计哲学与致歉

这个工具可能会引发一些哲学问题,因为该工具更注重数据库表而不是域模型。我们将采取几段谈论这种方法。首先,这个工具可以做到这一点。我们没有就项目应该或不应该结构化做出任何形式的陈述。一般来说,我们是富有领域模型的坚强支持者 - 但创建一个丰富的领域模型与回答这个模式应该如何坚持的问题是截然不同的。如果您的特定设计理念是域模型驱动所有决策,并且数据库设计服从于域模型,则此工具 - 和MyBatis本身 - 可能不适合您的应用程序。在这种情况下,我们建议认真观察Hibernate - 它可能更符合您的应用设计和理念。

但并不是所有的项目都符合这个范例。真正的企业级应用程序很少。MyBatis可以在数据库设计被视为与域对象设计相同的项目中获得巨大的帮助。MyBatis不是一个对象关系映射器,并不会透明地持久化对象。因此,应用程序开发人员编写SQL以与数据库表进行交互。在大型或企业级项目中,许多因素很常见:

  • 数据库设计通常是与OO域设计的独立功能(独立管理)
  • 数据库设计师没有OO工具(如继承),所以他们不以OO的方式思考
  • 应用程序设计人员无法完全控制数据库表的最终形式。例如,似乎适合应用程序的一个对象的数据可能会被拆分成数据库中的几个表。
  • 数据库设计通常与OO设计完全不同,导致表和对象之间的显着不匹配。

这些因素是MyBatis是您的应用程序的良好候选工具的主要指标,这是MyBatis Generator可以产生重大影响的项目类型。那么MyBatis在这种情况下应该如何使用呢?数据访问对象(DAO)模式仍然是主要模式。MyBatis Generator可以生成与每个单独表格匹配的一组基本对象。生成的代码是事务中立的。这意味着如果事务中涉及多个表,则很容易将生成的代码扩展为添加事务属性。或者,您可以创建另一个与域对象的持久性需求更匹配的DAO(或服务方法),并在单个事务中使用一个或多个生成的对象。
例如,考虑一个典型的Order对象 - 典型的header / detail问题。在某些环境中,这样的对象将被持久化到至少4个表中 - 两个关键表,一个“标题”表和一个“详细”表(再次,我们没有提出任何关于这是否是“正确的”设计的陈述,只是说一个事实)。您的应用程序仍应与Order对象进行交互,并且在某个地方(在OrderDAO或服务对象中)可能存在saveOrder(Order order)方法。该方法将与所涉及的4个表中的每一个的生成代码进行交互。在这种情况下,代码产生了什么?几件事情:重用 - 可能需要从多个不同的DAO或服务方法访问某些表。1、为每个表创建一个DAO可以促进应用程序中的重用和一致性。数据库抽象 - 服务层通常在应用程序中定义持久性。2、这些方法可以很快地稳定下来。随着数据库设计的发展:

  • 随着数据表的更改,代码可以快速重新生成
  • 可以根据需要修改服务方法
  • 应用程序中的较高层保持不变

3、开发人员生产力 - 基于生成表的DAO是快速可重复且无错误的。开发人员可以专注于Object持久性,如果需要,可以使用复杂的连接查询。4、更少的缺陷 - 因为任何应用程序中最繁琐和容易出错的部分(使SQL与对象相匹配)都是自动化的。
原文:Philosophy and Apology

相关阅读:

MyBatis Generator (MBG) 代码生成器简介

MyBatis Generator 代码生成器 快速入门指南

MyBatis Generator XML 配置文件参考

运行 MyBatis Generator 后的任务

运行MyBatis Generator

MyBatis Generator中的新功能

SSM框架——使用 MyBatis Generator 生成代码,包括:Model、Dao、Mapping

从源

MyBatis Generator(MBG)设计哲学与致歉相关推荐

  1. 5.6 Mybatis代码生成器Mybatis Generator (MBG)实战详解

    文章目录 前言 一.Mybatis Generator简介 二.Maven插件运行方式 三.生成配置 generatorConfig.xml MyBatis3Simple风格 MyBatis3风格 M ...

  2. MyBatis逆向工程--MyBatis Generator (MBG)代码生成工具的使用

    人工智能,零基础入门!http://www.captainbed.net/inner 一.新建一个maven项目,pom文件引入jar包依赖: <!-- MBG==MyBatis逆向工程代码生成 ...

  3. MyBatis Generator(MBG) 自动模板使用配置

    介绍 MBG是MyBatis访问数据库的代码生成器,可以支持对单表的CRUD操作,多表及其他操作还需手动编码. MyBatis Generator官网 v1.3.7版本升级内容  JAVA8及以上版本 ...

  4. MyBatis Generator(MBG)使用

    MyBatis Generator-MGB Maven依赖 编写generatorConfig.xml文件 配置运行 Maven依赖 创建SpringBoot项目增加Maven依赖 <build ...

  5. Mybatis generator,MBG使用详细介绍,MBG xml合并,Java合并

    Mybatis generator mybatis 自动生成代码工具介绍 mybatis使用起来轻便,可编写Sql.受到很多开发者的喜爱.但是由于项目需要大量sql也让人很烦躁. 所以mybatis自 ...

  6. 从源码构建 MyBatis Generator(MBG)

    从源码构建 所有MyBatis Generator(MBG)发行版包括源代码,唯一的编译时间依赖关系在ant.jar上 - 用于成功编译包含的Ant任务.直接从源代码编译MBG - 只需将源解压缩到一 ...

  7. MyBatis Generator(MBG)从Abator迁移

    此页面详细介绍MyBatis Generator(MBG)和Abator之间的变化.对于大多数用户而言,更改应该很简单.如果您扩展了Abator的任何类以提供代码生成器或Java类型解析器的自定义实现 ...

  8. 逆向工程MBG(MyBatis Generator)

    文章目录 逆向工程MBG(MyBatis Generator) 概述 MyBatis Generator (MBG) 是 MyBatis MyBatis的代码生成器.它将为所有版本的 MyBatis ...

  9. MyBatis Generator(MBG)PostgreSQL使用说明 区分大小写敏感

    PostgreSQL使用说明区分大小写敏感 PostgreSQL对所有数据库标识符(表名,模式名,列名等)区分大小写.此外,PostgreSQL对所有小写字母的所有标识符都有不同的偏好.如果您使用Po ...

最新文章

  1. 前端解决跨域问题的8种方案(最新最全)
  2. 鸿蒙计划什么时候开始,华为鸿蒙计划被曝!研究者是2020应届生,网友:初出茅庐凭啥...
  3. Cisco 3550-EMI 交 换 机 配 置 教 程
  4. zip2john工具爆破zip文件
  5. 程序员必会的核心基础知识:1张导图+10本书
  6. 2dpca的matlab代码,2DPCA人脸识别的matlab代码
  7. fcpx调整图层_【FCPX萌新系列】新手常遇到的4个基础调色问题
  8. c++ stl string char* 向 string 转换的问题
  9. 防止订单重复提交的2种技术解决方案
  10. QQ群统一规范与守则
  11. mysql 二次方函数_MySQL SQRT函数:求二次方根
  12. Postman在pre-request Script中执行登录获取token
  13. LED驱动IC TM1616,TM1650,TM1651替代兼容型号(VK,AIP)
  14. 两本 PDF + 一个插件:labuladong 刷题三件套正式发布
  15. 整理使用移动光猫拨号
  16. 教师资格证计算机科目有哪些内容,初中教师资格证考试科目及内容有哪些?
  17. java中文域名转码
  18. Microsoft Excel 2010表最多容纳的行数
  19. Python中拼音库PyPinyin
  20. python爬虫58同城(多个信息一次爬取)

热门文章

  1. 【Java】 归并排序的非递归实现
  2. python进程问题
  3. iOS 中delegate的理解与使用(传值)
  4. vscode-go 插件安装
  5. Cordova开发总结(插件篇)
  6. 通过一个月时间字段分组
  7. MSSQL从2000升级到2005丢失数据库关系图的解决方案
  8. PyTorch 入坑五 autograd与逻辑回归
  9. 前端笔记 | CSS浮动
  10. 【ROS学习笔记】(一)常用命令的解释与举例