Java EE 基本开发流程及数据库连接池 Druid
2019-10-25 06:54:45来源:博客园 阅读 ()
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
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash