文档介绍:第9章 Hibernate概述
Hibernate是一个免费的开源Java包,它使得程序与数据库的交互变得十分容易,更加符合面向对象的设计思想,像数据库中包含普通Java对象一样,而不必考虑如何把它们从数据库表中取出。使开发者可以专注于应用程序的对象和功能,而不必关心如何保存它们或查找这些对象。甚至在对SQL语句完全不了解的情况下,使用hibernate仍然可以开发出优秀的包含数据库访问的应用程序。
JDBC简介
Java访问数据库最原始的方法是通过JDBC来完成的。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC是J2EE标准的一部分,它提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
JDBC提供的工具接口
API,开发者可以通过它们编写数据库的程序代码。。
DriverManager类:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接。
Connection类:负责维护JSP/JAVA数据库程序和数据库之间的联机。可以建立三个非常有用的类对象。
JDBC提供的工具接口
Statement类:通过Statement类所提供的方法,可以利用标准的SQL命令,对数据库直接新增、删除或修改操作
PreparedStatement类:PreparedStatement类和Statement类的不同之处在于PreparedStatement类对象会将传入的SQL命令事先编好等待使用,当有单一的SQL指令比多次执行时,用PreparedStatement类会比Statement类有效率
ResultSet类:负责存储查询数据库的结果。并提供一系列的方法对数据库进行新增、删除和修改操作。也负责维护一个记录指针(Cursor),记录指针指向数据表中的某个记录,通过适当的移动记录指针,可以随心所欲的存取数据库,加强程序的效率。
JDBC访问数据库
使用JDBC操作数据库,一般基本都是如下几个步骤:
(1)载入数据库驱动。不同的数据库驱动程序是不同的,一般由数据库厂商提供这些驱动程序。
(2)建立数据库连接,获得Connection对象。
(3)根据SQL语句建立Statement对象或者PreparedStatement对象。
(4)用Connection对象执行SQL语句,获得结果集ResultSet对象。
(5)然后一条一条读取结果集 ResultSet 对象中的数据,保存在某个Java对象中。
(6)mit命令。
(7)最后依次关闭各个 Statement对象和Connection对象。
持久化层
访问数据库代码与业务逻辑混杂在一起带来了很多问题,这样的程序设计严重显示了程序的可扩展性和适应性,所以有必要要把涉及数据库操作的代码分离出来与业务逻辑分离。就形成了所谓“持久化层”的概念。
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等(在本书中介绍的“持久化”仅针对将存储数据库的情况)。
关系型数据库与面向对象的冲突
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。而Java是完全面向对象的语言,这个冲突就表现的越发明显。
对目前的J2EE信息化系统而言,通常采用面向对象分析和面向对象设计的过程。系统从需求设计到系统设计都是按面向对象方式进行。但到了详细设计阶段,由于数据持久化需要保存到关系数据库,不得不自底向上修改设计方案,又回到了按照过程进行编程的老路上来,这是非常令人沮丧的。
ORM介绍
ORM的全称是Object/Relation Mapping,即对象/关系映射。ORM也可理解是一种规范,具体的ORM框架可作为应用程序和数据库的桥梁。目前ORM的产品非常多,比如Apache组织下的OJB,Oracle的TopLink,JDO,JPA等等,当然还包括本章介绍的hibernate。
什么是ORM
面向对象程序设计语言与关系数据库发展不同步时,需要一种中间解决方案,ORM框架就是这样的解决方案