*.关于持久化这个概念!
■顾名思义就是把缓存中的java对象放到数据库中使之持久.对于需要持久化的对象,它的生命周期分为三个状态:临时状态,持久化状态,游离状态.
●临时状态:刚刚用new语句创建,没有被持久化,不处于session的缓存中
●持久化状态:已经被持久化,而且加入到session的缓存中
●游离状态:已经被持久化,但不放在session的缓存中
◆Session具有一个缓存,位于缓存中的对象处于持久化状态,它和数据库中的相关记录对应,Session能够在某些时间点,按照缓存中持久化对象的属性变化来同步数据库,这一过程称为清理缓存.
◆Session的save()方法把临时状态变为持久化状态.
◆Session的update(),lock(),replicate(),save(),persist()或者saveOrUpdate()方法方法使游离状态变为持久化状态.
*。关于ORM这个概念!
对象关系映射(ORM)提供了概念性的、易于理解的模型化数据的方法。
从ORM名字中就可以看出其原理:参照mapping,将object转换成sql语句,然后持久化到RDB中。
mapping记录object与RDB(表)的映射关系;这种映射关系可以是一个xml文件或者注解。
*。Annotation?JPA?
Hibernate对类的映射的实现一个是通过Annotation注释,另一个是通过XML配置,现在是重A轻X了。
JPA全称Java Persistence API持久化编程接口,Hibernate就是JPA Provider中很强的一个,JPA现在就是Hibernate功能的一个子集。Hibernate实体对象的状态,有自由、持久、游离三种,JPA里有new,managed,detached,removed,这些状态都是一一对应。而其他的如Query query = manager.createQuery(sql),它在Hibernate里写法上是session,而在JPA中变成了manager,所以从Hibernate到JPA的代价应该是非常小的 。
Hibernate的流程:
1.工具eclipse或myeclipse,然后先下载hibernate以及slf4j还有MySQL-JDBC的jar类库
2.New个web项目,create个数据库和表,create database hibernate; use hibernate;create table student (id int primary key,name varchar(20),age int);
3.把需要用到的类库bulid path进来
4.可以右键>myeclipse>add Hibernate capabilities,eclipse下直接建立hibernate.cfg.xml文件,模板可以在http://www.hibernate.org/docs搜一下或者直接到以下地址copy
http://docs.jboss.org/hibernate/core/3.6/reference/zh-CN/html/tutorial.html#tutorial-firstapp-mapping
5.然后根据实际修改该配置文件
<session-factory>会话工厂,生产会话,每次请求就建个会话
<property name="dialect">数据库方言,数据库各种数据语言就像全国各地的话,如白话、潮州话、湖南话,方言是将其统一的普通话,人人都能通话。各个数据库的方言可以在百度一下或者官方文档查看
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">数据库的URL,本地的mysql一般的URL是这样的jdbc:mysql://IP地址:3306/数据库名称
jdbc:mysql://127.0.0.1:3306/hibernate
</property>
<property name="connection.username">root</property>用户名
<property name="connection.password">moshow</property>密码
<property name="connection.driver_class">数据库JDBC驱动,hibernate底层依然是通过jdbc实现的,只不过包装起来了,操作方便了
com.mysql.jdbc.Driver
</property>
<mapping resource="./Guests.hbm.xml" />映射的文件名,如果用xml映射的话,一般每个被映射的类都要对应一个xxx.hbm.xml
</session-factory>
6.接↑,就是为每个要映射的类建立一个对应的xxx.hbm.xml
<hibernate-mapping>hibernate映射
<class name="Guest" table="guests">这个类名叫什么,对应数据库中哪张表
<id name="gname" column name="gname"> 类中和数据库对应的主键名称,用id来表示,如果类中的名称和数据库名不一样则id和column都要写,不然只写id就可以了,这里写出来可以对照一下
</id>
<property name="guest" column name="guest"> 其它属性
</property>
</class>
</hibernate-mapping>
7.写测试类
Student s = new Student(); 新建一个student对象并设置对应值
s.setId(1);
s.setName("zhangsan");
s.setAge(8);
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 根据配置文件创建一个会话工厂SessionFactory
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(s);
session.getTransaction().commit();进行会话的过程
要注意的几点就是:
◤使用的是getCurrentSession来创建session的话,在commit后,session就自动被关闭了,也就是不用再session.close()了.但是如果使用的是openSession方法创建的session的话,那么必须显式的关闭session,也就是调用session.close()方法.这样commit后,session并没有关闭。
◤save()之后,不会马上对数据库进行更新,而是在Transaction的commit()之后才会对数据库进行更新,在Transaction之间的操作要么全部成功,要么全部失败,如果失败,则会回滚全部操作,就当做本次会话什么都没发生。
附上学习资源项目一个!
*.以上是我初学Hibernate的小结,很适合初学者,对于高手来说这绝对是小小菜,不知道对不对,大家可以看看,不对、不通、不好理解的地方都可以提出来!
我是学尚学堂马士兵的视频的,觉得很不错,大家想学可以去下载!
相关推荐
机器人路径优化:基于强化学习Q-learning算法的移动机器人路径优化MATLAB
本项目是一款支持Java、Kotlin和C++的多语言自定义控件通用库,包含176个文件,涵盖43个PNG图片、41个Java源文件、40个XML布局文件、21个Kotlin源文件、4个Gradle配置文件及其他相关文件。库提供详尽的API文档,支持持续集成与维护,旨在提供便捷、高效的自定义控件开发体验。
本项目为基于树莓派的HarmonyOS系统移植与开发设计源码,包含116个文件,涵盖20个头文件、19个Markdown文档、16个C语言源文件、7个PNG图片文件、7个PDF文件、4个二进制文件、4个ELF文件、4个gn文件、3个HCS文件,以及使用C、Shell和Python等多种编程语言编写。该源码旨在实现HarmonyOS系统在树莓派平台上的移植与应用开发。
【毕设项目】springboot校友社交系统 答辩用的 PPT
全国大学生电子设计大赛项目合集全国电赛优秀作品STM32项目(ST大赛三等奖作品)超声波自拍神器
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
全国大学生电子设计大赛项目合集全国电赛优秀作品开源基于STC15W4K61S4的微型四旋翼
微信小程序模块化开发框架-abrator
原卡GPU-Z保存下来的
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
微信小程序开发资源总结-100款精彩微信微信
ADC建模,ADC数字校准,模拟ic设计 模数转器, ADC MATLAB建模, 包含实例和说明 ADC数字校准 ,simulink模型 14bit 100MSAR ADC 12位流水线 pipelined ADC 模拟IC,ADC建模 多种sar adc和流水线的matlab模型 ADC的动态fft,静态特性inl、dnl仿真 多种 sarADCMATLAB和simulink 建模全都整合在里面了 实用SAR ADC的Matlab Simulink Model,可用于非理想效应的行为级仿真一个实用的SAR ADC的行为级模型。 对多种非理想效应都进行了建模仿真,包括非线性采样,比较器offset,以及电容适配 ADC的动态fft,静态特性inl、dnl仿真 教程,动态静态参数分析。 东西很多,就不一一介绍了。
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
微信小程序Redux与_cechat eapp Redux绑定
golang,微信小程序,电子商务系统_高国
该项目为基于Java语言的VEP视频播放器解码设计源码,总共有23个文件,其中包含7个Java源文件、4个属性文件以及必要的配置和构建文件。
微信小程序图表库,微信小程式图表_wx-Charts
该系统是一套基于Java语言的蓝旭春季后端考核题解设计源码,由24个文件组成,包括11个Java源文件、7个XML配置文件、1个Git忽略文件、1个mvnw文件、1个cmd脚本、1个Markdown文档、1个CSV文件和1个HTML文件。项目旨在提供蓝旭春季后端考核的题解实现,适合后端开发人员参考和学习使用。
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在辽宁2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据