四十五 数据源及分层开发

本文介绍了Java中的数据源JNDI以及数据库连接池的原理,强调了它们在资源管理和代码解耦中的作用。此外,详细讲解了如何通过JNDI获取Tomcat内置的DBCP连接池,并探讨了分层架构在项目开发中的应用,特别是DAO模式在数据访问层的角色。

四十五章 — 数据源及分层开发

一、了解JNDI的使用(了解)

JNDI(Java Naming and Directory Interface) java的命名和目录接口

JNDI的作用:用于在多个项目中进行资源共享,且极大的对代码进行了解耦

二、理解数据库连接池的原理

Connection Pool 连接池

作用:

用来降低每次JDBC连接数据库时的资源损耗,因为JDBC连接数据库每次都要开启连接,结束还要进行关闭,这个过程比较浪费资源

联想打客服电话

连接池原理:

提前在请求前准备一些连接对象放在连接池中,每日当有请求过来时,给其分配一个来凝结对象,然后进行处理,处理结束之后,;连接对象再回归连接池,当连接对象全部被分配之后(坐席全忙),后续的请求可以进行等待,等待连接对象可用

java提供的连接池对象接口 javax.sql.DateSource

(连接池)DBCP、 C3P0、 Druid 他们都实现自上方连接池接口

DBCP(DataBaseConnectionPool): 它是Apache的一个开源组件,它是conmmons系列的一个组件

1.掌握使用JNDI获取Tomcat内置的连接池

Tomcat中有内置的DBCP连接池,我们现在正好也需要,所以可以去获取一下。

<!-- 
    	name:JNDI查找用的名字
    	type:资源的类型  统一用接口
    	auth:表示这个资源是由容器(Tomcat)来管理的
    	maxActive:最大的连接数
    	maxIdle:最大的空闲连接数
    	maxWait:最大的连接等待时间
     -->
    <Resource 
    	name="jdbc-mysql"
    	type="javax.sql.DataSource"
    	auth="Container" 
    	driverClassName="com.mysql.jdbc.Driver" 
    	url="jdbc:mysql:///kgcnewsdb?useUnicode=true&amp;characterEncoding=utf-8"
    	username="root" 
    	password="root"
    	maxActive="100" 
    	maxIdle="30" 
    	maxWait="10000"/>
public void getConnection() throws Exception {
    if(conn == null || conn.isClosed()) {
        // conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        // 采用连接池
        Context context = new InitialContext();
        DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc-mysql");
        conn = dataSource.getConnection();
    }
}

三、熟练应用分层架构去开发项目

DAO模式:可以把业务代码和数据访问/操作代码进行分离

  • DAO接口
  • DAO实现类
  • 数据库连接和关闭的工具类+通用的增删改查
  • 实体类

三层架构:

  • 表现层(Web/controller/action) :用来接收数据请求并作出响应
  • 业务逻辑层(service)将业务代码完全提取出来(做业务逻辑处理,事务也是放在这一层)
  • 数据访问层(dao):DAO模式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值