Java EE 基本开发流程及数据库连接池 Druid

一、 公司开发基本流程
    a. 了解需求信息(比较模糊)
        需求,不是别人告诉你的,是你自己挖掘出来的。
        售前工程师(对行业知识了解):编程学不好,但懂点代码,对人的综合能力要求比较高

b. 产品经理:
        整理需求,了解,从网上找些竞品分析。[3,5 个同类产品]
        竞品分析:
            1. 客户人群(流量)
            2. 市场前景
            3. 功能(优劣势)

c. 产品设计师:
            通过竞品分析,做个系统原型(线框图/草图)通过ps/axture/c4d把原型做出来
            页面优势,技术优势,我们做的系统功能优势,交互效果(感觉)(研究人的行为)

d. 原型会给客户做展示(ppt axture)

e. 前端程序员:照着原型去做静态的页面(HTML5/CSS3/JS)
        设计人员与前端对接
        静态 Demo 做出来

f. 后台程序员:拿着静态 Demo 做成真正带功能的东西。
    g. 静态 Demo :根据这个 Demo 看到这个系统要做哪些功能。
    h. 需求分析: 概要设计  项目的详细设计 OOA/OOD
        功能:划分模块
            例子: 产品模块 : 产品分类  产品信息  
                    订单模块:
                      购物车:
                    个人中心:
                    商铺模块:
                    物流模块:
                    支付模块:
    I. 开发阶段:
            你要每个功能模块,做E-R图(实体关系模型图)
            工具:Rose(IBM开发 笨重)    PD(PowerDesigner  轻量级)
    J. 根据E-R图建立数据库(SQL关系型是数据库,NoSQL 不仅仅是关系数据库)
    K. 实体类    Dao类  Service类  Servlet类 ...
    L. 测试上线

注意:切记要有规范:(制定规范)

   例如:类名:XXXServlet
    
二、数据库连接池

1.连接池的出现

  普通的jdbc:
      驱动:jdbc接口的实现类
      DriverManager(驱动管理器):获取数据连接 Connection
      Statement ResultSet等:Connection
              connect
      jdbc<--------------->DB

    时间浪费在:  建立一次连接 销毁一次连接    效率不高,真正的开发中也不会这么做。

连接池的出现:        
      jdbc<---------连接池------------>DB        缓存机制
      Sun公司的人: 一套接口 DataSource(数据源),他就是数据库连接池的标准规范
          DataSource:谁实现?
              c3p0 : Hibernate
              druid: 阿里

2. 如何编写数据库连接池:
    (1)引入 Jar 包  数据库的驱动,在pom.xml引入地址   JDBC的实现类
    (2)引入数据库连接池的实现类,在pom.xml引入地址   Druid

3. 实现:

  Maven项目包:

  Project Directory
      entity: 实体类
      dao:    持久层
          prototype(原型)
          impl
      service:业务层代码
          prototype
          impl
      servlet:控制层
      util:工具类

 (1). pom.xml

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 2   <modelVersion>4.0.0</modelVersion>
 3   <groupId>com.uek.project</groupId>
 4   <artifactId>airsys</artifactId>
 5   <version>0.1</version>
 6   <packaging>war</packaging>
 7   <name>airplane</name>
 8    <!-- 2. 项目属性配置 -->
 9   <properties>
10   <!-- 项目编码使用UTF-8 -->
11       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
12   <!-- 忽略掉web.xml文件 ,因为我们使用servlet3.0开发web项目 -->
13       <failOnMissingWebXml>false</failOnMissingWebXml>
14   </properties>
15   <!-- 3. 配置项目所需要的第三方jar 包 -->
16   <dependencies>
17           <!-- servlet api -->
18            <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
19      <dependency>
20         <groupId>javax.servlet</groupId>
21         <artifactId>javax.servlet-api</artifactId>
22         <version>3.1.0</version>
23         <scope>provided</scope>
24      </dependency>
25
26     <dependency>
27         <groupId>javax.servlet.jsp</groupId>
28         <artifactId>jsp-api</artifactId>
29         <version>2.0</version>
30         <scope>provided</scope>
31     </dependency>
32
33     <!-- MySQL数据库连接池 -->
34     <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
35     <dependency>
36         <groupId>mysql</groupId>
37         <artifactId>mysql-connector-java</artifactId>
38         <version>5.1.48</version>
39     </dependency>
40
41     <!-- Druid -->
42     <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
43     <dependency>
44         <groupId>com.alibaba</groupId>
45         <artifactId>druid</artifactId>
46         <version>1.1.20</version>
47     </dependency>
48
49   </dependencies>
50
51       <!-- 配置构建插件 -->
52       <build>
53           <plugins>
54               <plugin>
55               <!-- 编译插件 -->
56                   <artifactId>maven-compiler-plugin</artifactId>
57                   <version>3.5.1</version>
58                   <configuration>
59                       <source>1.8</source>
60                       <target>1.8</target>
61                   </configuration>
62               </plugin>
63               <!-- Tomcat 插件 -->
64               <plugin>
65                 <groupId>org.apache.tomcat.maven</groupId>
66                 <artifactId>tomcat7-maven-plugin</artifactId>
67                 <version>2.2</version>
68                 <configuration>
69                     <port>8080</port>
70                     <path>/airsys</path>
71                     <!-- 实现热部署,不需要每次修改代码后都重新启动Tomcat -->
72                     <contextReloadable>true</contextReloadable>
73                 </configuration>
74             </plugin>
75
76
77           </plugins>
78       </build>
79 </project>

  (2). druid.properies

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/demo
username=root
password=root

#Druid连接池
initialSize=5
# 初始化连接池里建立的数量 :5
maxActive=10
# 最大的连接数量:10
maxWait=3000
# 等待时间:3s

  (3).  DruidUtil.java

  1 package util;
  2
  3
  4 import java.io.InputStream;
  5 import java.sql.Connection;
  6 import java.sql.ResultSet;
  7 import java.sql.SQLException;
  8 import java.sql.Statement;
  9 import java.util.Properties;
 10
 11 import javax.sql.DataSource;
 12
 13 import com.alibaba.druid.pool.DruidDataSourceFactory;
 14
 15
 16 /**
 17  * 数据库连接池工具
 18  * @author 儿子
 19  *
 20  */
 21 public class DruidUtil {
 22
 23     private static DataSource ds;
 24
 25     /**
 26      * 静态代码块  加载配置文件信息  只读取一次
 27      */
 28     static {
 29         //-- 1. 加载配置文件信息
 30         Properties ps = new Properties();     //-- Map<Object,object>
 31         //-- 2. 建立到配置文件流
 32         InputStream in = DruidUtil.class.
 33                 getClassLoader().getResourceAsStream("druid.properties");
 34         //-- 3.读取配置文件的数据
 35         try {
 36             ps.load(in);
 37             ds = DruidDataSourceFactory.createDataSource(ps);
 38         } catch (Exception e) {
 39             System.out.println("读取配置文件异常");
 40         }
 41
 42         //-- 4. 通过配置信息建立数据源对象DataSoure(其实就是连接池对象)
 43         try {
 44             DruidDataSourceFactory.createDataSource(ps);
 45         } catch (Exception e) {
 46             System.out.println("建立数据源对象DataSoure异常");
 47         }
 48     }
 49     /**
 50      * 获取连接对象
 51      * @return Connection
 52      */
 53     public static Connection getConnection() {
 54
 55         //-- 通过连接池获取连接对象
 56         Connection con = null;
 57         try {
 58             con = ds.getConnection();
 59         } catch (SQLException e) {
 60             System.out.println("JDBC 获取连接异常");
 61         }
 62         return con;
 63     }
 64
 65     /**
 66      * 释放文件资源
 67      * @param stmt
 68      * @param con
 69      */
 70     public static void close (Statement stmt, Connection con) {
 71         if(stmt!=null) {
 72             try {
 73                 stmt.close();
 74             } catch (SQLException e) {
 75                 e.printStackTrace();
 76             }
 77         }
 78         if (con != null ) {
 79             try {
 80                 con.close();
 81             } catch (SQLException e) {
 82                 e.printStackTrace();
 83             }
 84         }
 85     }
 86     /**
 87      * 释放文件资源
 88      * @param rs
 89      * @param stmt
 90      * @param con
 91      */
 92     public static void close(ResultSet rs, Statement stmt, Connection con) {
 93         if (rs != null ) {
 94             try {
 95                 rs.close();
 96             } catch (SQLException e) {
 97                 e.printStackTrace();
 98             }
 99         }
100         if(stmt!=null) {
101             try {
102                 stmt.close();
103             } catch (SQLException e) {
104                 e.printStackTrace();
105             }
106         }
107         if (con != null ) {
108             try {
109                 con.close();
110             } catch (SQLException e) {
111                 e.printStackTrace();
112             }
113         }
114     }
115
116
117
118     public static void main(String[] args) {}
119 }

  (4) 测试是否成功

    a. 将druid.properties 复制到 test/resources/ 下

    b. 新建编写类 TestDruid.java

      

    c. TestDruid.java

 1 import java.sql.Connection;
 2 import java.sql.Statement;
 3
 4 import util.DruidUtil;
 5
 6 /**
 7  * 测试连接池工具类
 8  * @author 儿子
 9  *
10  */
11 public class TestDruid {
12     public static void main(String[] args) throws Exception {
13         //-- 1. 获取连接对象
14         Connection con = DruidUtil.getConnection();
15         //-- 2. 定义sql语句
16         String sql = "Create table student(id int,name varchar(20))";
17         //-- 获取语句对象
18         Statement stmt = con.createStatement();
19         //-- 4. 执行Sql语句
20         stmt.execute(sql);
21         //-- 释放资源
22         DruidUtil.close(stmt, con);
23     }
24 }

原文地址:https://www.cnblogs.com/zhangze-lifetime/p/11722109.html

时间: 2024-10-09 17:36:44

Java EE 基本开发流程及数据库连接池 Druid的相关文章

使用Java中的动态代理实现数据库连接池

2002 年 12 月 05 日 作者通过使用JAVA中的动态代理实现数据库连接池,使使用者可以以普通的jdbc连接的使用习惯来使用连接池. 数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的连接数据库对服务性能来讲是一个瓶颈,使用缓冲池技术可以来消除这个瓶颈.我们可以在 互联网上找到很多关于数据库连接池的源程序,但是都发现这样一个共同的问题:这些连接池的实现方法都不同程度地增加了与使用者之间的耦合度.很多的连接池 都要求用户通过其规定的方法获取数据库的连接,这一点我们可以理解,毕竟目前

Java EE 项目开发采用的模式

一.Java EE 传统开发采用的模式:Model1 模式 最原始的 Web 程序是基于 Java Servlet 编写的,后来 JSP 技术的出现,使得把 Web 程序中的 html/xhtml 文档与 Java 业务逻辑代码有效地分离成为可能.通常, JSP 负责动态生成 Web 网页,而业务逻辑则由其他可重用的组件(如 JavaBean)来实现.JSP 可通过 Java 程序片段来访问这些组件,于是就有了 JSP+JavaBean 这样一种通行的程序结构. 在这种模式下,JSP 集控制和显

Java EE实用开发指南基于Weblogic+EJB3+Struts2+Hibernate+Spring 目录

http://www.cnblogs.com/lauleoi/p/3864254.html http://www.cnblogs.com/lauleoi/p/3864265.html http://www.cnblogs.com/lauleoi/p/3864267.html http://www.cnblogs.com/lauleoi/p/3864268.html http://www.cnblogs.com/lauleoi/p/3864270.html http://www.cnblogs.c

项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

作者:泥沙砖瓦浆木匠 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 如果我的帮到了你,是否乐意捐助一下或请一杯啤酒也好呢?有你支持,干的更好~ 点这参与众筹 我的支付宝:13958686678 一. 前言 泥瓦匠又和大家见面了,最近两天我在Code Review ,顺便代码小小的Refactoring(重构)下.先了解这个项目吧,这次解决的是数据源配置优化.因为这web项目中配置数据源的地方很多.例如JDBC要配置数据源,Mybatis要配置数据源,Quartz定时任务要配

springboot配置数据库连接池druid、整合mybatis、整合pagehelper

springboot配置数据库连接池druid druid所需pom依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>o

eclipse ide for java ee developers 开发环境搭建详解图文(j2ee)

使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给团队中新来的应届生做指导,专门讲解了一下Eclipse开发环境的搭建过程,一是帮助他们尽快的熟悉IDE的使用,二也是保证团队开发环境的一致性(顺便说一下,这点在敏捷开发团队中尤为重要,方便知识传播,提升团队快速响应能力). 培训的过程中想起了自己当年初涉java时的情景,不免感慨万千啊.正所谓"工欲善其事必先利其器",话不多说,赶紧搭吧. 一.jdk安装与配置 jdk7于3月份刚刚发布,目前eclipse的最新版

【使用JBoss 7进行Java EE 6开发】开发部署调用EJB

开发工具:Eclipse LUMA(需安装了Oracle Java EE 6) JBoss版本:jboss-as-web-7.0.2.Final 下面是开发步骤,在JBoss 7中开发部署EJB还是比较简单的. 读者需已正确安装上述软件平台,并掌握了创建Web 工程及开发Servlet的能力. 1.创建Web工程 选择Project -> New -> Dynamic Web project 创建一个Web项目,创建好项目后,写一个Servlet,等会要用这个Servlet来调用EJB(EJB

Java Web(五) -- 事务 &amp; 数据库连接池 &amp; DBUtiles

#事务&数据库连接池&DBUtils ##事务 > Transaction 其实指的一组操作,里面包含许多个单一的逻辑.只要有一个逻辑没有执行成功,那么都算失败. 所有的数据都回归到最初的状态(回滚) * 为什么要有事务? > 为了确保逻辑的成功. 例子: 银行的转账. ###使用命令行方式演示事务. * 开启事务 start transaction; * 提交或者回滚事务 commit; 提交事务, 数据将会写到磁盘上的数据库 rollback ; 数据回滚,回到最初的状态.

[转]阿里巴巴数据库连接池 druid配置详解

一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色的性能,也逐渐映入了大家的眼帘.接下来本教程就说一下druid的简单使用. 二.jar包下载.配置详解及配置示例 1.jar获取 可以从 http://repo1.maven.org/maven2/com/alibaba/druid/ 下载最新的jar包.如果想使用最新的源码编译,也可以从 http