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.0modelVersion>
 3   <groupId>com.uek.projectgroupId>
 4   <artifactId>airsysartifactId>
 5   <version>0.1version>
 6   <packaging>warpackaging>
 7   <name>airplanename>
 8    
 9   <properties>
10   
11       <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
12   
13       <failOnMissingWebXml>falsefailOnMissingWebXml>
14   properties>
15   
16   <dependencies>
17           
18            
19      <dependency>
20         <groupId>javax.servletgroupId>
21         <artifactId>javax.servlet-apiartifactId>
22         <version>3.1.0version>
23         <scope>providedscope>
24      dependency>
25      
26     <dependency>
27         <groupId>javax.servlet.jspgroupId>
28         <artifactId>jsp-apiartifactId>
29         <version>2.0version>
30         <scope>providedscope>
31     dependency>
32     
33     
34     
35     <dependency>
36         <groupId>mysqlgroupId>
37         <artifactId>mysql-connector-javaartifactId>
38         <version>5.1.48version>
39     dependency>
40     
41     
42     
43     <dependency>
44         <groupId>com.alibabagroupId>
45         <artifactId>druidartifactId>
46         <version>1.1.20version>
47     dependency>
48     
49   dependencies>
50   
51       
52       <build>
53           <plugins>
54               <plugin>
55               
56                   <artifactId>maven-compiler-pluginartifactId>
57                   <version>3.5.1version>
58                   <configuration>
59                       <source>1.8source>
60                       <target>1.8target>
61                   configuration>
62               plugin>
63               
64               <plugin>
65                 <groupId>org.apache.tomcat.mavengroupId>
66                 <artifactId>tomcat7-maven-pluginartifactId>
67                 <version>2.2version>
68                 <configuration>
69                     <port>8080port>
70                     <path>/airsyspath>
71                     
72                     <contextReloadable>truecontextReloadable>
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
 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

      Java EE 基本开发流程及数据库连接池 Druid_第1张图片

 

     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 }

 

你可能感兴趣的:(Java EE 基本开发流程及数据库连接池 Druid)