Hibernate的相关概念 以及 序列化和持久化的区别
来源:互联网 发布:非诚勿扰程序员死亡 编辑:程序博客网 时间:2024/06/07 10:51
一. Hibernate 初识
hibernate是一种ORM(object relation mapping,对象关系映射)框架,所谓的对象关系映射,通俗的说,就是把JAVA对象保存到关系型数据库中。
hibernate要做的事,就是让对象投影到关系数据库中,然后实施持久化。其具体实现:建立对象到关系数据库的映射.
Example: 建立User类到数据库的映射
一个简单的类User:
public class User{
private int id;
private String name;
}
User类对应的数据库表USER:
column-name type rule
id number P
name varchar2 R
当进行持久化时,需要把对象的两个属性的值保存到数据库存的USER中,如果使用JDBC的话,我们需要自己写SQL,并获取对象两个属性的值作为参数来进行持久话。SQL可能如下:
insert into USER(name) value(?);
当使用hibernate时,首无要作好对象到表的映射关系,使用配置文件来实现:
User.hbm.xml:
...
<class name="user" table="USER"><!--该类对象保存到USER表-->
<id name="id" column="id">
<generator class="native"/><!--这里有很多策略来生成ID,这里选择本地自动生成,-->
</id>
<property name="name" column="name">
</class>
...
然后在通过hibernate.cfg.xml中配置到数据库的联接,并读取User.hbm.xml文件,就建立了映射关系了。
当需要持久化对象时,需要使用到hibernate的session对象:
session.save(new User());
看到了吗?我们只需要操作对象就行了,也就是说,编程的人不需要看到数据库了,他只需要直接操作对象就行了。
当我们采用ORM框架之后,应用程序不再直接访问底层的数据库,而是以面向对象的方式来操作持久化对象(例如创建、修改、删除等),而ORM框架则将这些面向对象操作转换成底层的SQL操作。
hibernate 如何实现持久化?
答:
1.hibernate是一种ORM(object relation mapping,对象关系映射)框架,所谓的对象关系映射,通俗的说,就是把JAVA对象保存到关系型数据库中,即进行持久化的框架。
2.hibernate进行持久化首先要建立对象到关系数据库的映射。
3.hibernate根据定义的映射规则将对象持久化(保存到)数据库存中。这就实现了对象持久化。
二. 序列化和持久化的区别
序列化也是一种对象服务,就是把内存中的对象序列化成流、或者把流反序列化成对象。需要实现2个接口:
首先要说的是,Hibernate中ORM里对应的映射文件BEAN,必须实现序列化.因为BEAN里的数据需要存入数据库(要转化为二进制保存),进行存取工作.
JAVA类的数据 ,如果要进行相关的存储工作(如写文件,网络传输,写数据库等),那么这个数据的类 就必须实现序列化接口 (java.io.Serializable).
序列化 : 把对象转换 为二进制数据(如网络传输,存储数据库等),必须实现序列化接口 (java.io.Serializable).
持久化 : 把对象保存 在介质上(如写文件,读文件不是), 没有接口实现,一般指方法调用.
对象只有在序列化之后才能进行持久化存储,从持久化存储介质加载的数据通过反序列化转变成运行时对象。
- Hibernate的相关概念 以及 序列化和持久化的区别
- 持久化的一些相关概念
- 序列化和持久化的区别与联系
- 【转】Hibernate 对象持久化操作的区别和联系
- hibernate持久化方法get和load的区别
- Hibernate持久化方法save和persist的区别
- Hibernate第一讲:持久化的理论和ORM和Hibernate的相关知识
- Hibernate之Session对象的相关方法以及持久化对象的状态
- 持久化的概念
- Hibernate实战数据持久化之一Hibernate产生背景和相关的基础知识
- Hibernate的持久化
- ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系
- Java 持久化 和 序列化 区别
- Hibernate的持久化配置和操作
- hibernate的持久化对象的状态,n+1问题和load和get方法区别
- 关于hibernate持久化所造成的问题以及解决方案
- Hibernate的配置和Hibernate的持久化类
- Hibernate内置持久化标志符生成器的区别
- C语言实现输入字符串计算单词个数
- CodeForces 699DFix a Tree
- 基于注解的Spring多数据源配置和使用
- KODI皮肤插件
- 【C/C++】大端与小端
- Hibernate的相关概念 以及 序列化和持久化的区别
- POJ - 1860 Currency Exchange(最短路)
- Java Unsafe 类
- CSS布局模型
- Mac下的Bash配置文件冲突问题
- (快速幂加素数判断)
- JavaScript设计模式----单例模式
- JAVA EE 面试题
- Bluetooth GATT(通用属性),ATT和Profile(配置文件)