1. java连接数据库方式
Java和数据库操作流程大致为:
//第一步,注册驱动程序 //com.MySQL.jdbc.Driver Class.forName("数据库驱动的完整类名"); //第二步,获取一个数据库的连接 Connection conn = DriverManager.getConnection("连接URL","用户名","密码"); //第三步,创建一个会话 Statement stmt=conn.createStatement(); //第四步,执行SQL语句,增加,删除,修改记录 stmt.executeUpdate("增加,删除,修改记录的SQL语句"); //或者查询记录 ResultSet rs = stmt.executeQuery("查询记录的SQL语句"); //第五步,对查询的结果进行处理 while(rs.next()){ //对记录的操作 } //第六步,关闭连接 rs.close(); stmt.close(); conn.close();
形式有:直接获取连接信息,原生jdbc连接数据库、通过.properties配置文件、c3P0、Mybatis、Hibernate等。
2.Java数据库名词
JDBC:
i.Java DataBase Connectivity(Java 数据库连接)。
ii.规范客户端程序访问数据库的应用程序接口。面向关系型数据库。
iii.包扩JDBC接口、JDBC驱动:
1、Java代码并不是直接通过TCP连接访问数据库,而是通过JDBC接口来访问。JDBC接口通过JDBC驱动来实现真正对数据库的访问。
2、JDBC接口是Java标准库自带的。主要位于JDK的java.sql包中,之后的扩展内容位于javax.sql包中。
3、JDBC驱动是由数据库厂商提供的。例如,MYSQL的JDBC驱动有Oracle提供。各个JDBC驱动都提供了标准的JDBC驱动。
4、访问不同数据库共用JDBC接口,使用各自的JDBC驱动。
5、JDBC接口定义了一些接口。JDBC驱动实现了这些接口。
6、MYSQL的JDBC驱动是一个jar包。纯Java编写。
7、JDBC API(JDBC 接口)主要包括:(这里不细阐述)
DriverManager、Driver、Connection、Statement、PreparedStatement、CallableStatement(存储过程)、SQLException。
8、JDBC驱动分四种类型:(这里不细阐述)
JDBC-ODBC桥、本地API驱动、网络协议驱动、本地协议驱动(几乎只有数据库厂商自己才能提供这种类型)。
ODBC:
i. Open DataBase Connectivity,开放数据库互连。
ii. 提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统(DBMS)。
iii. 诞生背景:对于访问数据库的方法,缺乏一个基于C语言的统一编程接口。必须要使用数据库厂商随数据库产品一同发布的一些工具集来访问数据库,或者在程序中使用嵌入式SQL来访问数据库。
iii. 运用形态通常是由应用程序经过一个称之为ODBC管理器的工具。
iiii. ODBC管理器,目前主要存在以下几种实现:
Microsoft ODBC(Windows操作系统)、unixODBC(非Windows操作系统)、iODBC(平台无关)
iiiii. ODBC和JDBC区别:
1、ODBC适用语言:c、c++、c#等。 JDBC适用语言:java。
2、JDBC的背景:java不方便调用C语言接口(ODBC),此外ODBC比较复杂,JDBC尽量保证简单功能的简便性。JDBC移植性比ODBC好。从而,JDBC在ODBC的基础上发展起来。
3、两者的移植性:ODBC,通常情况下,安装完ODBC驱动程序之后,还需要经过确定的配置才能应用。而不同的配置在不同的数据库服务器之间不能够通用。也就是装一次需求配置一次。JDBC驱动程序安装会自动完成有关配置。
4、共同点:四个组件(应用程序、驱动程序管理器、驱动程序、数据源);不直接和数据库交互(通过驱动程序)
5、ODBC向JDBC过渡期:背景:数据库应用程序以前采用的ODBC驱动程序,目前要采用JDBC驱动程序。解决途径,通过JDBC-ODBC桥接类型的JDBC驱动程序,这样可以利用现有的ODBC驱动程序来存取关系型数据库。不仅能保留先前的开发架构,还能应用Java作为新的开发环境。
DBCP:
i. DataBase connection pool,数据库连接池。
ii. apache上的一个Java连接池项目。
iii. 流程:预先同数据库建立一些连接放在内存中(即连接池)。需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池管理。连接池有属性:初始连接数、连接的上下限数、每个连接的最大使用次数、最大空闲时间(超过会自动释放)等。
DAO:
i. Data Access Object,数据访问对象。
ii. 流程思想:将对数据源的访问操作抽象封装在一个公共API中(建立一个接口,接口定义了此应用程序中将会用到的所有事务方法,并编写一个单独的类来实现这个接口)。官方说法:位于业务逻辑和持久化数据之间实现对持久化数据的访问。
iii. DAO模式:有一些“套路”用于解决特定问题成为模式。DAO模式实现了两次隔离:隔离了数据访问代码和业务逻辑代码;隔离了不同数据库实现(如由MySQL变成Oracle只要增加DAO接口的新实现类即可)。
iiii. 一个典型的DAO模式主要由以下几部分组成:DAO接口、DAO实现类、实体类、数据库连接和关闭工具类。
ORM映射:
i. Object Relational Mapping,对象关系映射。
ii. 产生背景:面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展起来的。两套理论存在显著的差别。为了解决这个不匹配的现象,对象关系映射技术应运而生。
iii. 俗话说,就是通过实例对象的语法,完成关系型数据库的操作的技术。
数据库的表(table)——> 类(class)
记录(record,行数据)——> 对象(object)
字段(field)——> 对象的属性(attribute)
NOSQL:
i. Not Only SQL,不仅仅是SQL
ii. 非关系型的数据库。用于超大规模数据的存储。不需要固定的模式,无需多余的操作就可以横向扩展。
iii. 优点:高扩展性、分布式计算、低成本、灵活性,半结构化的数据、没有复杂的关系;
缺点:没有标准化、有限的查询功能(到目前为止)
iiii. 背景:用户生成的数据,例如:用户的个人信息、社交网络、地理位置、操作日志等已成倍增加。如果要对这些数据进行挖掘,SQL数据已不适用,NOSQL能很好处理这些数据。
iiiii. NoSQL数据库分类:列存储、文档存储、key-value存储、图存储、对象存储、xml数据。
iiiiii. 现在正流行MongoDB。