Java EE 基本開發流程及數據庫鏈接池 Druid

1、 公司開發基本流程
    a. 瞭解需求信息(比較模糊)
        需求,不是別人告訴你的,是你本身挖掘出來的。
        售前工程師(對行業知識瞭解):編程學很差,但懂點代碼,對人的綜合能力要求比較高

    b. 產品經理:
        整理需求,瞭解,從網上找些競品分析。[3,5 個同類產品]
        競品分析:
            1. 客戶人羣(流量)
            2. 市場前景
            3. 功能(優劣勢)前端


    c. 產品設計師:
            經過競品分析,作個系統原型(線框圖/草圖)經過ps/axture/c4d把原型作出來
            頁面優點,技術優點,咱們作的系統功能優點,交互效果(感受)(研究人的行爲)java


    d. 原型會給客戶作展現(ppt axture)mysql


    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. 測試上線

注意:切記要有規範:(制定規範)web

   例如:類名:XXXServlet
    
2、數據庫鏈接池sql

1.鏈接池的出現數據庫

  普通的jdbc:
      驅動:jdbc接口的實現類
      DriverManager(驅動管理器):獲取數據鏈接 Connection
      Statement ResultSet等:Connection
              connect
      jdbc<--------------->DB    apache

    時間浪費在:  創建一次鏈接 銷燬一次鏈接    效率不高,真正的開發中也不會這麼作。編程


    鏈接池的出現:        
      jdbc<---------鏈接池------------>DB        緩存機制
      Sun公司的人: 一套接口 DataSource(數據源),他就是數據庫鏈接池的標準規範
          DataSource:誰實現?
              c3p0 : Hibernate
              druid: 阿里

2. 如何編寫數據庫鏈接池:
    (1)引入 Jar 包  數據庫的驅動,在pom.xml引入地址   JDBC的實現類
    (2)引入數據庫鏈接池的實現類,在pom.xml引入地址   Druid
api

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 }
相關文章
相關標籤/搜索