什么是持久化(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(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类.
什么是持久化(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,会带来哪些问题:
1:我们访问数据库操作就没有规范.
2:因为数据库厂商是不一样的,就会执行自己的访问数据库规则.
3:比如小明,之前在A公司,使用了的是AB公司的MySQL,就得学习MySQL访问数据库的方式.
后来,小明去了B公司,B公司使用的Oracle的Oracle数据库,小明只能重新学习Oracle访问数据库的方式.
小明又跳槽了去了C公司,C公司使用的IBM的DB2,继续学习.
--------------------------------------------------------------------------------------------
造成上述问题的根本原因:
数据库厂商不一样,没有指定访问数据库的规则,所以操作不同的数据库就得学习不同的技术.
这时,SUN出来,说:我来统一指定所有数据库的访问规则,你们(各大数据库厂商)必须按照我的方式来实现,否则不支持你的数据库服务器.
有了规范之后,针对于不同的数据库服务器,就只需要一套技术即可.
这个规范称之为JDBC.
同学们开发常见错误:
1. 忘记拷贝驱动包.
2. 在Java代码中使用import引入的时候,
本应该引入java.sql.XX接口.
却引入了com.mysql.XXX类.
3 .给类起名的时候,不要占用别人的类名.
在sql包中