全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师
32206 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
全栈回顾 (1讲)
加餐 (1讲)
全栈工程师修炼指南
15
15
1.0x
00:00/00:00
登录|注册

12 | 唯有套路得人心:谈谈Java EE的那些模式

Hibernate 隐藏 SQL 层,提供面向对象的查询语言
MyBatis 使用 XML 或注解配置 ORM,不关心实际 SQL 的书写
DAO 有两面性,可能导致抽象泄露
DAO 的好处是解耦,但也带来复杂性
DAO 提供数据持久化的抽象结构
Struts 提供了更强大的拦截器功能
可以配置过滤器映射关系
拦截过滤器具有链式结构
模式之间有单向关联关系和依赖关系
Java EE 模式分为呈现层、业务层和集成层
Java EE 作为模式的温床
Java EE 模式帮助解决实际问题
MVC 是一种典型的模式
模式是通用词
选修课堂:MyBatis vs Hibernate
数据访问对象
拦截过滤器
概览
背景和概念
Java EE 模式

该思维导图由 AI 生成,仅供参考

你好,我是四火。
本章我们以 MVC 架构为核心,已经介绍了很多设计模式,今天我们将进一步泛化,谈论更多的 Java EE 模式。这些模式,就是我们在搭建全栈架构、设计的工作过程中,不断总结和应用的“套路”。

背景和概念

我相信很多人都接触过面向对象模式,可是,模式是个通用词,面向对象只是其中的一个分支而已。事实上,我们本章的重点 MVC 本身就是一种典型的模式,介绍过的 CQRS 是模式,学习过的 AOP、IoC,这些其实也都是模式。
因此,和其它领域的技术相比,作为全栈工程师的我们,更有机会接触到各种模式。这些模式可以帮助我们在设计开发工作中拓宽思路,使用精巧的代码结构来解决实际问题。
说到这里,你可能会问,为什么这次谈论模式的时候,要使用 Java EE 这个编程语言前缀?模式不是应该和语言无关吗?
一点都没错,模式就是和语言无关的,但是,诞生模式最多的温床,就是 Java 语言。
世界上没有任何一门语言,像 Java 一样,几乎一直被黑,但是生态圈一直在壮大,且在工业界具备如此统治力。很多人说,Java 是一门平庸的语言,这可能没错,但是它对于底层细节的封装和语言本身的难度做到了很好的平衡,它不一定会有多精巧、多出彩,但是新手也可以顺利完成工作,且不容易写出破坏性强、其他人难以接手的代码,这对于要规模、要量产的工业界来说,简直是超级福音。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了Java EE中的设计模式,以MVC架构为核心,讨论了Java EE模式的广泛性和重要性。作者指出,Java EE作为一个广泛应用的编程语言,其生态圈的壮大和对模式的敏感性使得Java EE模式得到了广泛的应用。文章列举了Java EE模式的分类和涉及的范围,并详细介绍了拦截过滤器的配置和实践。通过实例演示了在Tomcat中配置过滤器的步骤,并展示了过滤器的调用顺序和作用。最后,作者指出过滤器本质上是面向切面编程的一种子模式,与之前学习的AOP模式相关联。整体而言,本文通过实例和理论相结合的方式,深入浅出地介绍了Java EE中的设计模式,为读者提供了全面的了解和实践指导。文章还介绍了DAO层的两种经典解决思路:MyBatis和Hibernate,分析了它们的特点和适用场景。同时,提出了对读者的思考问题,引导读者深入思考和实践。文章内容丰富,既有理论知识又有实际操作,适合Java EE开发人员和对设计模式感兴趣的读者阅读学习。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • Kevin·程
    师傅领进门,修行在个人。课程时间看似不长,但毕竟是全栈技术的精华,一边通过课程学习,一边还得网上搜各种概念知识,终于把web前端技术、前端UI框架、前端可视化组件、前端框架、后端框架、持久化框架做了个大概了解,发展演化出这麽多技术,目的还是分层、解耦、高效开发吧。

    作者回复: 👍🏻

    2020-04-05
    3
  • pyhhou
    1. 在 Node 中使用第三方的包,调用包中的 API 函数进行 DAO,这些 API 函数往往比较灵活,你可以写 SQL 语句,也可以使用它既定的模版格式,但是一般选用后者,因为后期换库的话会比较好维护 2. 文章中提到说过滤器其实是 AOP 模式的一个子模式,二者的思想其实都是把逻辑流程当中,具有共性的东西提取出来,达到解耦合的目的。个人理解,过滤器往往是针对一个 URL 的请求输入进行处理,但是对于一些中间的逻辑解耦来说,直接使用过滤器就不太合适。

    作者回复: 👍

    2019-10-13
    1
  • Chocolate
    1. 主要通过 Mybatis 和 Spring Data JPA 访问 MySQL 数据库 2. 过滤器和 AOP 都可以实现通用逻辑的处理,但 AOP 可以更灵活的处理各个方法不同的需求,如自定义的分布式锁注解,可以根据实际场景改变超时时间等。

    作者回复: 关于#2,表述不太妥当,二者其实都是 AOP,一个是 Tomcat 中配置过滤器,一个是 Spring 配置切面逻辑。

    2019-10-07
  • 御用厨子
    1、Dao层主要还是访问数据库,通过Mybatis。 2、过滤器主要是能避免大量重复的代码出现,如简单的用户校验、有无Session校验和实现一些简单的功能(如访问计数器、改变传入参数字符格式)。而且过滤器能后期加入到服务中,不必修改已有业务逻辑代码。维护相对简单一些。

    作者回复: 关于 #2,无论是使用 Tomcat 的过滤器,还是使用 Spring 配置切面逻辑,其实都能避免重复代码。所以这个表述不是很妥当。

    2019-10-07
  • anginiit
    有一个大项目是jpa+oracle,其他的有jpa+mysql,也有mybatis+mysql的,jpa的底层是hibernate,记得前几年前使用jpa的时候遇到很多问题,一个大项目下来,基本原理也就都明了了。
    2019-10-11
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部