持久化
即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等,那么什么是持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。
持久化是将程序数据在持久状态和瞬时状态间转换的机制。比如JDBC就是一种持久化机制。文件IO也是一种持久化机制。
广义的理解,”持久化”包括和数据库相关的各种操作:
保存:把对象永久保存到数据库中。
更新:更新数据库中对象(记录)的状态。
删除:从数据库中删除一个对象。
查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。
加载:根据特定的OID,把一个对象从数据库加载到内存中
ORM
对象关系映射 Object Relational Mapping,一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的——“虚拟对象数据库”。
| 面向对象概念 | 面向关系概念 |
| :———– | :————- |
| 类 | 表 |
| 对象 | 表的行(记录) |
| 属性 | 表的列(字段) |
ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。
ORM 采用元数据来描述对象 —— 关系映射细节, 元数据通常采用 XML 格式,并且存放在专门的对象 —— 关系映射文件中.
那么什么是元数据呢?
元数据是一种描述数据的数据,任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息等等,其实在Linux文件系统中元数据就是INode!
hibernate
hibernate为应用程序提供了高效的O/R关系映射和查询服务,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。
hibernate的Helloworld
hibernate这个框架呢我还是从helloworld开始复习,第一步纯粹当做是预习了,首先说一下普通的Java工程中如何使用hibernate框架,Java版本的HelloWorld正式开始!
首先需要一些jar包(点击这里即可下载),我要说明的是这些jar包的hibernate版本是4.2,如果你需要新的去网上下载就好了!接着我使用的eclipse演示这个额HelloWorld程序,需要安装一个hibernate的插件:
在workwith里面输入:http://download.jboss.org/jbosstools/updates/stable/kepler/
我的项目目录结构就是这样了:
hibernate.cfg.xml是通过刚才安装的eclipse的hibernate插件生成的,内容如下(指定关联的 .hbm.xml 文件是后面生成的):
1 |
|
从上面也可以看出来,hibernate.cfg.xml是hibernate的基本配置信息,在JDBC阶段就已经接触过,我就不在此一一细说了,接下来我们需要一个实体类来对应表,类的对象来对应表的记录,于是此设计如下:
1 | package com.xpu.demo_01; |
根据此类生成一个对象关系映射文件,就是News.hbm.xml:
1 |
|
相信这个还是非常容易明白的,ID主键自增让数据库原生的去操作,所以generaor配置的是native,其他的内容标题、作者等都是String类型,时间就是Java的java.util.Date类型,这样就建立了类的属性和表的字段的关系,这很关键!
接下来就该使用代码去操作了:
1 | package com.xpu.demo_01; |
执行完毕后,数据库的表中就会多一条数据,如果失败,可能是由于编码问题导致的,我的eclipse工程配置的都是UTF-8的编码,你可以在项目属性中尝试如下编码配置方式:
普通Java工程的hibernate的Helloworld就说完了,API以后再慢慢解释,下面说一下Maven工程下如何搭建这个Helloworld,Maven的依赖如下:
1 | <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> |
与普通Java工程不同之处就在于News.hbm.xml文件和hibernate.cfg.xml文件的放置位置,很显然在Maven下,这两个文件都可以放在resource目录下:
只不过稍微有点不同的是:在hibernate.cfg.xml中配置News.hbm.xml的位置的时候,直接写名字就好了!
- 本文作者: Tim
- 本文链接: https://zouchanglin.cn/1870821033.html
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 许可协议。转载请注明出处!