第四十三篇(数据源和分层开发)

数据源和分层开发

1. 了解JNDI的使用

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

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

2. 理解数据库连接池的原理

Connection Pool 连接池

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

联想你平时打客服电话(连接池)。

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

Java提供的连接池接:javax.sql.DataSource

DBCP、C3P0、Druid它们都实现在上方连接池接口。

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

  • 下载jar包 dbcp和pool http://commons.apache.org/proper/commons-dbcp/
  • 导入过来之后,开始使用API(API内容不少 需要你准备对应工具类,可能还需要对硬编码进行解耦)
  • 利用API获取对应的连接对象
2.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();
    }
}

3. 熟练应用分层架构去开发项目

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

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

三层架构:

  • (酒店前台迎宾)表现层(web/controller/action):用来接收用户请求并作出响应的
  • (酒店厨师)业务逻辑层(service):我们将业务逻辑代码完全提取出来(做业务逻辑处理,事务也是放在这一层的
  • (酒店采购)数据访问层(dao):DAO模式(专门做数据访问操作的)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值