首页 > 其他分享 >数据源及分层开发

数据源及分层开发

时间:2024-11-08 15:45:59浏览次数:6  
标签:逻辑 Tomcat 数据源 接口 分层 开发 连接池

数据源及分层开发

文章目录

1.使用Tomcat数据源

问题分析

访问前需要先获取连接

每次操作结束后,要释放资源

频繁的连接导致系统的安全性和稳定性差

解决问题

可以使用数据源和连接池

1.1连接池工作原理

连接池是由容器提供的,用来管理池中连接对象

在这里插入图片描述

数据源(DataSource)

javax.sql.DataSource接口负责建立与数据库的连接由Tomcat提供,将连接保存在连接池中

1.2Tomcat配置数据源步骤
1、配置Tomcat的conf/context.xml
	<Resource name="jdbc/news" 
              auth="Container"  type="javax.sql.DataSource"  maxActive="100" 
              maxIdle="30" maxWait="10000" username="root"  password="bdqn" 
              driverClassName="com.mysql.jdbc.Driver" 
              url="jdbc:mysql://127.0.0.1:3306/kgcnews"/>

name 		指定Resource的JNDI名称
Container 	指定管理Resource的Manager
type                    	指定Resource所属的Java类
maxActive	指定连接池中处于活动状态的数据库连接的最大数目
maxIdle		指定连接池中处于空闲状态的数据库连接的最大数目
maxWait 		指定连接池中的连接处于空闲的最长时间
    
2、使用JNDI获取连接对象
	
       Context ctx = new InitialContext();
	DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/news");
	Connection conn = ds.getConnection();
	out.println(conn);

2.使用JavaBean传递数据

public void add(int id, int categoryId, String title, String summary, String content, Date createdate) {
//方法体
}
public void add(新闻信息对象) {
//方法体
}

javaBean:

就是一个java类

作用:

封装业务逻辑

封装数据

3.JSP动作标签

jsp:useBean

JSP动作标签

通过动作标签,程序员可以在JSP页面中把页面的显示功能部分封装起来,使整个页面更简洁和易于维护

<jsp:useBean>
装载一个将在JSP页面中使用的JavaBean,发挥Java组件重用的优势
<jsp:useBean id="name" class="package.class"  scope="scope" >
    
name = javaBean的引用名
package.class = javaBean的类
scope = javaBean的范围
jsp:include
<jsp:include>
把指定文件插入正在生成的页面中
    
<jsp:include page="URL">
URL引入的界面
    
%@include%
<%@include file="URL"%>
URL引入的界面
    
<%@include%>与<jsp:include>
<jsp:include>为动态包含,将被包含页面的结果包含进来。先处理,再包含
<%@include%>为静态包含,将被包含页面的内容包含进来。先包含,再处理

4.分层开发

为什么要分层

高内聚:分层的设计可以简化系统设计,让不同的层专注做某一模块的事

低耦合:层与层之间通过接口或API来交互,依赖方不用知道被依赖方的细节

扩展性:分层架构可以让我们更容易做横向扩展

如果系统没有分层,当业务规模增加或流量增大时我们只能针对整体系统来做扩展。分层之后可以很方便的把一些模块抽离出来,独立成一个系统。

4.1传统的MVC架构

优点:关注前后端分离

缺点:模型层分层太粗,融合了数据处理、业务处理等所有的功能。核心的复杂业务逻辑都放到模型层,导致模型层很乱

适应场景:后端业务逻辑简单的服务,比如接口直接提供对数据库增删改查

4.2后端三层架构

定义:

表现层:controller

逻辑层:service

数据访问层:dao

优点:逻辑与数据层分离

缺点:模型层分层比较粗,核心的复杂业务逻辑都放到模型层,导致模型层很乱

适应场景:后端业务逻辑简单的服务,比如接口直接提供对数据库增删改查

如何来做系统分层
确定层次

在我看来,最主要的一点就是你需要理清楚每个层次的边界是什么。你也许会问:“如果按照三层架构来分层的话,每一层的边界不是很容易就界定吗?”

没错,当业务逻辑简单时,层次之间的边界的确清晰,开发新的功能时也知道哪些代码要往哪儿写。但是当业务逻辑变得越来越复杂时,边界就会变得越来越模糊

定义接口

任何一个系统中都有用户系统,最基本的接口是返回用户信息的接口,它调用逻辑层的 GetUser 方法,GetUser 方法又和 User DB 交互获取数据

遵循设计原则

使用设计原则如单一职责原则、依赖倒置原则等,确保每个层次都专注于一个特定的功能。这有助于确保系统的一致性和可维护性

5.总结

复杂架构中的分层设计是一种重要的软件架构策略,它在简化系统复杂性、实现专业职责分离、提升可复用性和可维护性、方便系统横向扩展以及实现职责划分等方面发挥着关键作用。然而,在实施过程中,需要注意清晰职责、灵活调整层次划分以及权衡利弊。通过合理运用分层设计,可以构建出更加稳定、可扩展和易于维护的软件系统。

标签:逻辑,Tomcat,数据源,接口,分层,开发,连接池
From: https://blog.csdn.net/nice66660/article/details/143628802

相关文章

  • 群控系统服务端开发模式-应用开发-基础框架开发补充
    一、总控制补充    在根目录下app文件夹下controller文件夹中修改Base总控制文件。需要添加操作者权限验证、获取操作者权限、设置操作者权限。    1、权限验证//验证权限protectedfunctioncheckRoleMenu($auth){if(empty($this->rules......
  • 双数据源混排
    importorg.apache.commons.collections4.CollectionUtils;importorg.apache.commons.lang3.tuple.Pair;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importjava.util.function.Function;/***......
  • 【北京迅为】itop-3588开发板摄像头使用手册Android12 双摄方案
     本章节对应资料在网盘资料“iTOP-3588开发板\02_【iTOP-RK3588开发板】开发资料\07_Android系统开发配套资料\08_Android12摄像头使用配套资料”目录下下载。 2.1Android12前摄+后摄网盘中默认的Android12源码支持四个摄像头单独打开,本小节我们来修改源码,实现同......
  • [AI大模型通过以下方式重塑软件开发流程]
     •代码自动生成:AI驱动的代码生成工具可以根据开发者输入的需求或注释自动生成代码,减少了手动编写代码的时间和工作量,提高了编码效率。  •智能调试与测试:AI可以分析代码库、错误日志以及用户反馈,自动识别潜在的缺陷和错误,并给出修复建议。同时,AI还能自动生成测试......
  • 网页版五子棋——用户模块(服务器开发)
    前一篇文章:网页版五子棋——WebSocket协议-CSDN博客目录·前言一、编写数据库代码1.数据库设计2.配置MyBatis3.创建实体类4.创建UserMapper二、前后端交互接口1.登录接口2.注册接口3.获取用户信息三、服务器开发1.代码编写2.测试后端接口·结尾·前言 ......
  • 【鸿蒙生态崛起,开发者有哪些机遇与挑战?】HarmonyOS NEXT 引领数字化未来
    文章目录前言一、HarmonyOSNEXT特点与升级二、全面突破操作系统核心技术三、鸿蒙生态全面守护用户隐私四、鸿蒙生态的崛起与开发者机遇五、全新鸿蒙生态引领数字化未来小结前言鸿蒙系统不断发展,有与安卓、iOS形成三足鼎立之势,且其在智能手机、智能穿戴、车载、......
  • 【SpringBoot开发】 文件上传 (秒传、断点续传、分片上传)
    原创Java技术前沿引言文件上传在软件开发项目中极为常见,涵盖了图片、音频、视频及各类文档的上传需求。对于小型文件,简单的Form表单上传机制通常足以应对。然而,当面对体积庞大的文件,如超过1GB的文件,或用户处于网络条件不佳的环境下时,传统的上传方式便显得力不从心。试想,用户......
  • 【ALINX 教程分享】基于 Z19-P 开发板实现 WIFI 无线通信的功能
     本教程基于ALINX开发板Z19-P,实现WIFI 无线通信的功能,WIFI模块使用 USB WIFIrtl8188cu。使用的usbwifi设备购买链接:http://e.tb.cn/h.gy25HiTTj7n5eNg?tk=zvvU3oWX4X特别提醒,本教程Z19-P所使用的 Linux环境是按照教程“Xilinx开发环境安装教程”搭建的,请......
  • 【征集令】2025年全球汽车软件开发状况调查,500美金等你拿!
    立即参与填写问卷汽车软件是汽车行业增长最快的领域之一,SDV、自动驾驶汽车、新能源汽车、网络安全和联网汽车都在汽车的未来发挥着重要作用。 Perforce是⼀家DevOps解决⽅案提供商,其产品覆盖版本控制软件、应⽤程序⽣命周期管理平台、敏捷规划软件以及⽤于静态代码分析的Klocw......
  • Springboot跃动小商品在线交易系统6503y(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,卖家,商品分类,商品品牌,商品信息开题报告内容一、选题背景与意义随着互联网技术的飞速发展,电子商务已成为推动全球经济一体化的重要力量。传统小商品市场......