什么是持久化(persistence):
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。
大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。
JPA:JavaEE的规范,Java persistence api: Java的持久化API. Hibernate实现了该规范.(xml/注解)
--------------------------------------------------------------------
在Java中,数据库存取技术只能通过JDBC访问数据库:
JDBC访问数据库的形式主要有两种:
1).直接使用JDBC的API去访问数据库服务器(MySQL/Oracle).
2).间接地使用JDBC的API去访问数据库服务器.
第三方O/R Mapping工具,如Hibernate, MyBatis等.(底层依然是JDBC)
JDBC是java访问数据库的基石
什么是持久化(persistence):
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。
大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。
JPA:JavaEE的规范,Java persistence api: Java的持久化API. Hibernate实现了该规范.(xml/注解)
--------------------------------------------------------------------
在Java中,数据库存取技术只能通过JDBC访问数据库:
JDBC访问数据库的形式主要有两种:
1).直接使用JDBC的API去访问数据库服务器(MySQL/Oracle).
2).间接地使用JDBC的API去访问数据库服务器.
第三方O/R Mapping工具,如Hibernate, MyBatis等.(底层依然是JDBC)
JDBC是java访问数据库的基石,其他技术都是对jdbc的封装.
,其他技术都是对jdbc的封装.
JDBC(Java DataBase Connectivity):
是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序.
JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
总结: JDBC本身是java连接数据库的一个标准,是进行数据库连接的抽象层,由java编写的一组类和接口组成,接口的实现由各个数据库厂商来完成
--------------------------------------------------------------------------------
JDBC的版本(不重要):
JDBC隶属于JavaSE的范畴,伴随着JavaSE的版本升级.
Java6开始:JDBC4.0: (了解),JDBC4.0有一个新特性-无需加载注册驱动.
Java7开始:JDBC4.1:
---------------------------------------------------------------
JDBC的API在哪里?
----->JDK的API中.
java.sql包装的就是JDBC的API.
各大数据库厂商就会对JDBC的API提供实现类.--->驱动包
注意:在开发中(编写的Java代码),使用到的关于JDBC的类/接口全部引入的是java.sql包中的.
千万不要引入com.mysql..Xxx类.
面向接口编程:
JDBC的接口 变量 = new MySQL的实现();
new Oracle的实现();
使用JDBC的准备环境:
1):拷贝MySQL的JDBC驱动,到Java项目中:mysql-connector-java-5.1.26-bin.jar
注意:是jar包,不是zip包.
2):选择jar,[buil path],把jar添加到classpath路径.
JDBC操作第一步:获取JDBC连接对象/Connection对象.
操作步骤(贾琏):
1):加载注册驱动.
Class.forName("com.mysql.jdbc.Driver");
为什么说上述代码,在完成加载注册驱动?
上述代码:
1):把com.mysql.jdbc.Driver这一份字节码加载进JVM.
2):当一份字节码被加载进JVM,就会执行其静态代码块.
而其底层的静态代码块在完成注册驱动工作.
2):获取连接对象.
通过DriverManager的getConnection方法创建Connection对象.
Connection conn = DriverManager.getConnection(url,username,password);
url=jdbc:mysql://localhost:3306/jdbcdemo
如果连接的是本机的MySQL,并且端口是默认的3306,则可以简写:
url=jdbc:mysql:///jdbcdemo
username=root
password=admin
可以通过 show processlist命令来查看有几个MySQL进程.
从Java6开始:JDBC4.0: (了解)JDBC4.0有一个新特性-无需加载注册驱动.
-----------------------------------------------------------------------
规范要求:从JDBC 4.0所有的驱动都必须包括 META-INF/services/java.sql.Driver 文件。此文件包含 java.sql.Driver 的 JDBC 驱动程序实现的名称。
程序会自动从 META-INF/services/java.sql.Driver去读取当前的驱动类的全限定名,此时程序员不再需要显示的编写 Class.forName("com.mysql.jdbc.Driver")代码.
-----------------------------------------------------------------------
在Web开发中,还是得使用手动加载注册驱动.
-----------------------------------------------------------------------
PS:有的时候,MySQL的驱动类也也会看到使用org.gjt.mm.mysql.Driver的情况,org.gjt.mm.mysql.Driver是早期的驱动名称,后来就改名为com.mysql.jdbc.Driver,现在一般都推荐使用 com.mysql.jdbc.Driver。
在最新版本的mysql jdbc驱动中,为了保持对老版本的兼容,仍然保留了org.gjt.mm.mysql.Driver,但是实际上 org.gjt.mm.mysql.Driver中调用了com.mysql.jdbc.Driver,因此现在这两个驱动没有什么区别。
操作JDBC的步骤口诀:
-->贾琏欲执事:
1:加载注册驱动.
2:获取连接对象.
3:创建/获取语句对象.
4:执行SQL语句.
5:释放资源.