本文共 3623 字,大约阅读时间需要 12 分钟。
* ORM |
JDBC代表Java Database Connectivity,它提供了一组java api 用来访问关系数据库的的java程序。这些java api 能够使Java程序执行sql语句,并与任何符合SQL规范的数据库进行交互。 之后我也查询了一些jdbc的优缺点,可以更近一步的了解一下:
JDBC优点 | JDBC缺点 |
干净整洁的 SQL 处理 | 大项目中使用很复杂 |
大数据下有良好的性能 | 很大的编程成本 |
对于小应用非常好 | 没有封装 |
易学的简易语法 | 难以实现 MVC 的概念 |
查询需要指定 DBMS |
ORM(ojbect-relational-mapping)对象关系映射,为了解决面向对象与关系数据库不匹配的问题。RDBMS以表格的形式存储数据,然后像Java或者C#这样的面向对象的语言表示一个对象关联图。ORM通过使用描述对象和数据库之间映射的元数据,将实体对象自动持久化到关系数据库中。 我们依然通过优缺点,来多方位的认识一下他:
ORM优点 | ORM缺点 |
使用业务代码访问对象而不是数据库中的表 | 降低程序的执行效率 |
从面向对象逻辑中隐藏 SQL 查询的细节 | 思维固定化 |
基于 JDBC 的 ‘under the hood’ | |
没有必要去处理数据库实现 | |
实体是基于业务的概念而不是数据库的结构 | |
事务管理和键的自动生成 | |
应用程序的快速开发 |
之前我们用到的ORM框架是mvc,和如今的hibernate,我们不要忘记哦,hibernate本身也是一个框架~
* Hibernate |
Hibernate 是由 Gavin King 于 2001 年创建的开放源代码的对象关系框架。他构建了具有关系对象持久性和查询服务的java应用程序。hibernate将实体类映射到数据库的表中,hibernate是传统的java对象和数据库服务器之间的桥梁,用来处理基于O/R映射机制和模式的对象。
hibernate几乎支持所有主要的RDBM。以下是hibernate所支持的数据库引擎:
Hibernate 架构是分层的,作为数据访问层,你不必知道底层 API 。Hibernate 利用数据库以及配置数据来为应用程序提供持续性服务(以及持续性对象)。我们先来看一下整体的架构图:
我们再来一下详细的看看hibernate应用程序体系结构视图以及一些重要的类。
hibernate使用了不同现存的Java API ,比如JDBC,java事务API(JTA),以及Java命名和目录界面(JNDI)。JDBC提供了一个基本的抽象级别的通用关系数据库的功能,Hibernate支持几乎所有带有JDBC驱动的数据库。JNDI和JTA允许Hibernate与J2EE应用程序服务器相集成。
下面简要了结束了Hibernate应用程序架构所涉及的每一个类对象。
配置对象是你在任何Hibernate应用程序中创造的第一个hibernate对象,并且经常只在应用程序初始化期间创造。它代表了Hibernate所需一个配置或属性文件。配置对象提供了两种基础组件。
配置对象被用于创造一个SessionFactory对象,使用提供的配置文件为程序配置hibernate,SessionFactory接口负责初始化Hibernate。并且允许实例化一个session对象。SessionFactory是一个线程安全对象并由应用程序所有的线程使用。SessionFactory 是一个重量级对象所以通常它都是在应用程序启动时创造然后留存为以后使用。每个数据库需要一个 SessionFactory 对象使用一个单独的配置文件。所以如果你使用多种数据库那么你要创造多种 SessionFactory 对象。
一个会话被用于与数据库的物理连接。Session 对象是轻量级的,并被设计为每次实例化都需要与数据库的交互。持久对象通过 Session 对象保存和检索。Session 对象不应该长时间保持开启状态因为它们通常情况下并非线程安全,并且它们应该按照所需创造和销毁。
一个事务代表了与数据库工作的一个单元并且大部分 RDBMS 支持事务功能。在 Hibernate 中事务由底层事务管理器和事务(来自 JDBC 或者 JTA)处理。这是一个选择性对象,Hibernate 应用程序可能不选择使用这个接口,而是在自己应用程序代码中管理事务。
Query 对象使用 SQL 或者 Hibernate 查询语言(HQL)字符串在数据库中来检索数据并创造对象。一个查询的实例被用于连结查询参数,限制由查询返回的结果数量,并最终执行查询。
Criteria 对象被用于创造和执行面向规则查询的对象来检索对象。
我们先通过项目中的一个映射文件来入手~
你需要以格式 .hbm.xml保存映射文件。我们保存映射文件在 Employee.hbm.xml 中。让我们来详细地看一下在映射文件中使用的一些标签:
<hibernate-mapping>
为根元素的 XML 文件,里面包含所有标签。<class>
标签是用来定义从一个 Java 类到数据库表的特定映射。Java 的类名使用 name 属性来表示,数据库表明用 table 属性来表示。<meta>
标签是一个可选元素,可以被用来修饰类。<id>
标签将类中独一无二的 ID 属性与数据库表中的主键关联起来。id 元素中的 name 属性引用类的性质,column 属性引用数据库表的列。type 属性保存 Hibernate 映射的类型,这个类型会将从 Java 转换成 SQL 数据类型。<property>
标签用来将 Java 类的属性与数据库表的列匹配。标签中 name 属性引用的是类的性质,column 属性引用的是数据库表的列。type 属性保存 Hibernate 映射的类型,这个类型会将从 Java 转换成 SQL 数据类型。* 未完待续 |
接下来,会给大家继续分享hibernate的其他知识点,由于篇幅的缘故,我们~感谢您的阅读,希望大家能够拍砖斧正~