Hibernate概述

来源:互联网 发布:美家预算软件 编辑:程序博客网 时间:2024/05/19 04:51

Hibernate是一个免费的开源Java包,它使得程序和数据库的交互变得十分容易,更加符合面向对象的设计思想,像数据库中包含普通Java对象一样,而不必考虑如何把他们从数据库中取出。使得开发者可以专注于应用程序的对象和功能,而不必关心如何保存或查找这些对象。甚至在对SQL语句完全不了解的情况下,使用Hibernate任然可以开发出优秀的包含数据库访问的应用程序。

一、JDBC简介

Java访问数据库最原始的方法是通过JDBC来完成的。JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC是J2EE标准的一部分,它提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

1、JDBC提供的工具接口

java.sql包提供了JDBC API ,开发者可以通过他们编写数据库的程序代码。在java.sql包中常见的类和接口包括以下内容:

DriverManager类:负责管理JDBC驱动程序

Connection类:负责维护JSP/JAVA数据库程序和数据库之间的联机。

Statement类:通过Statemament类所提供的方法,可以利用标准的SQL命令,对数据库直接进行新增、删除、或修改操作。

PreparedState类:PreparedStatement和Statement类的不同之处在于PreparedStatement类对象会将传入的SQL命令事先编号等待使用。当有单一的SQL指令被多次执行时,用PreparedStatement类会比Statement类有效率。

ResultSet类:负责存储查询数据库的结果,并提供一系列的方法对数据库进行新增、删除、和修改操作,也负责维护一个记录指针,记录指针指向数据库中的某个记录,通过适当地移动记录指针,可以随心所欲的存取数据库,加强程序的效率。

2、JDBC访问数据库

(1)载入数据库驱动

(2)建立数据库连接,获取connection对象

(3)根据SQL语句建立Statement对象或者PreraredStatement对象

(4)用Connection对象执行SQL语句

(5)然后用一条一条读取结果集ResultSet对象中的数据,保存在Java对象中。

(6)如果是修改或删除操作需要对数据库发Commit命令

(7)一次关闭Statement对象和Connection对象

 

典型的JDBC程序:

 

Class.formName("com.mysql.jdbc.Driver");

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","test","test");

Statement stmt=con.createStatement();

ResultSet rs=stmt.executeQuery("select * from person");

while(re.next()({

  int id=rs.getInt("id");

  String name=rs.getString("name");

  String age=rs.getObject("age")==null?null:rs.getInt("age");

System.out.print("id+":"+name+" "+age);

}

stmt.close();

con.close();

 

由上看出利用JDBC业务处理逻辑和数据存取逻辑是混杂在一起的。代码逻辑非常复杂。

3、持久化层

访问数据库代码与业务逻辑混杂在一起带来了许多问题,这样的程序设计严重的限制了程序的可扩展性和适应性,所以有必要把涉及及数据库操作的代码分离出来与业务逻辑分离,就形成了所谓“持久层”。

 

持久化,即把数据(内存中的对象)保存到可永久保存的存储设备中,持久化的主要应用是将内存中的数据存储在关系型数据库中。也可以存储在磁盘文件中\XML数据文件中等。

 

所谓持久层,即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联,它包括数据库的相关操作:

保存:

更新:

删除:

查询:

 

在设计中分出持久化的目的都是为了提高应用程序的可维护性、可扩展性、可重用性和可管理性。

 

原创粉丝点击