一、ORM
1、持久化管理器 --- session
持久化对象和临时对象,持久化对象,即对象的信息在数据库中存在,在内存中也有。
临时对象也就是新对象,没有同步到数据库。
session开放,对对象的修改,session都会保持其的同步
session.save(Object); 变为持久状态,默认在调用commit()时执行语句
session关闭,对象进入游离状态
删除对象,可以直接删除游离状态的对象,到临时状态,其间有一个转换到持久状态的过程
2、Hibernate中的对象的状态:
(1) Transient Object 临时对象
不与数据库中的任何一条记录关联,其生命周期在不被任何其他对象引用时为止,然后被垃圾回收。
(2) Persistent Object 持久化对象
持久化对象实例有一个主健值作为其数据库标识,与Persistence Manage相关联,持久化对象实例总是与一个Session相关联。
注:ORM有一个策略侦察持久化对象的更改,即automatic dirty checking。
对于应用他是隐藏的。Hibernate的策略时尽可能晚的更新数据库,Hibernate默认时更新数据库的所有字段,若只想更新更改了的字段则改dynamic-update = “true”,即动态更新。
(3) Datached Object 脱管对象
当关闭session,实例失去了与Persistence manager的关联,这些对象称作为托管对象,即不再与数据库关联也不在hibernater的管理之下。
在应用中的一个事务之外可保存脱管对象的引用,这些引用可被再次用于新的事务中。
3、ORM就是关系映射
是把对象永久保存到数据库的过程
二、SessionFactory是和一个数据库一一对应的,他只能对应一个hibernate.cfg.xml文件,一个hibernate.cfg.xml中只能配置一个数据库的连接信息。
POJO(普通的java类)
持久化对象和临时对象,持久化对象,即对象的信息在数据库中存在,在内存中也有。临时对象也就是新对象,没有同步到数据库。
Session,持久化管理器。
三、Hibernate的核心接口
Configuration,用于解析hibernate.cfg.xml文件和XXXXX.hbm.xml文件,并创建SessionFactory对象。
SessionFactory,用于创建Session对象。
Session,持久化管理器,对象级数据库操作
必须工作在单线程环境下:(1)加synchronized (2)不能保存为成员变量,要创建局部变量
Query,对对象作持久化操作或查询操作
Transaction ,用于管理操作事务。
四、<hibernate-mapping package="XXX.XXX.XXX" auto-import="false">
package 类的包名,在下面的映射中就可以不写类的全限定名称
五、id生成方式
1,序列sequence 只适用于Oracle
<id name="id" column="id">
<generator class="sequence">
<param name="sequence">person_seq</param><!--指定sequence名-->
</generator>
</id>
2,自增列,适用于SQLServer、MySql
<id name="id" column="id">
<generator class="identity"/>
</id>
3,取最大值加一
<id name="id" column="id" type="integer">
<generator class="increment"/>
</id>
4,根据底层数据库指定生成方法
<id name="id" column="id">
<generator class="native"/>
</id>
使用缺省策略
针对Oracle数据库的生成方式还是sequence,只不过需要一个特定名字的sequence,"hibernate_sequence"。
5,高低位算法
<id name="id" column="id">
<generator class="hilo">
<param name="table">high_value</param>
<!--设置高位值取值的表-->
<param name="column">next_value</param>
<!--设置高位值取值的字段-->
<param name="max_lo">50</param>
<!--指定低位最大值,当取道最大值是会再取一个高位值再运算-->
</generator>
</id>
以上是hilo算法的普通形式,不适合用于squenece
在一个会话中保存多个对象
分享到:
相关推荐
【标题】"bbs_s.zip_bbs jsp_hibernate bbs" 涉及到的知识点主要集中在Java Web开发领域,特别是使用Hibernate和Struts框架构建一个基于JSP的BBS论坛系统。以下是对这些技术的详细介绍: 1. **Hibernate**: ...
标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...
"Java培训教程 菜鸟到高手"是一套旨在帮助初学者全面掌握Java编程技能的教程。这个教程的目标是通过系统性的学习,将新手逐步引领至高级开发者水平。 首先,Java基础知识是学习的起点。包括Java的历史、特性以及为...
### Java菜鸟入门手册知识点概述 #### 一、Java基础知识 1. **Java环境配置**: - **Windows环境下的配置**:安装Java Development Kit (JDK) 后,需要设置环境变量,包括`JAVA_HOME`、`Path`等,确保命令行工具...
Java程序员的成长之路是一个充满挑战与探索的过程,从初学者到熟练掌握各项技能,需要系统性的学习和实践。"Java程序员由菜鸟到笨鸟学习文档"就是这样一个旨在帮助初入Java世界的学习者逐步进阶的资源。它覆盖了从...
Struts2和Hibernate是两种非常流行的Java开源框架,它们在Web开发中被广泛使用,尤其适合初学者学习。Struts2作为MVC(Model-View-Controller)框架,主要用于处理前端请求,管理业务逻辑,而Hibernate则是一个对象...
根据提供的文件信息,“Java程序员由菜鸟到笨鸟”是一本旨在帮助初学者成长为合格Java开发者的书籍。本书作者为曹胜欢,发布日期为2018年3月19日。下面将从多个角度对本书涉及的重要知识点进行概述。 ### 一、Java...
《菜鸟学Hibernate——从入门到精通》 在Java开发领域,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程旨在帮助初学者快速掌握Hibernate的核心概念和使用方法,通过实例深入理解...
这个基础教程针对新手,旨在让初学者从零开始掌握Hibernate的核心概念和使用方法。 1. **Hibernate概述** Hibernate是一个对象关系映射(ORM)框架,它允许Java开发者将业务对象与数据库表进行映射,通过面向对象...
对于初学者,尤其是“菜鸟”级别的开发者来说,理解和掌握这两个框架的集成以及如何实现一个登录功能是入门的重要步骤。 Hibernate是一个对象关系映射(ORM)框架,它允许开发人员使用面向对象的方式来操作数据库。...
对于“java菜鸟”来说,理解并整合这三个框架可能有一定难度,但通过详细的步骤和实际操作,可以逐步掌握。参考上述流程,结合提供的链接中的详细教程,可以逐步构建一个简单的整合实例,加深对Java Web开发的理解。...
SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中常见的三大开源框架的组合。这个框架集合提供了模型-视图-控制器(MVC)的设计模式,使得开发者能够更高效地构建动态网站和企业级应用程序。在这个组合...
在实际开发中,Java开发者通常会使用Spring、Hibernate、MyBatis等框架。理解这些框架的工作原理和使用方法,可以快速构建大型应用。 6. **阅读和理解开源代码**: 阅读优秀的开源项目代码能帮助初学者提升编程...
本学习用例1是为初学者设计的,旨在帮助菜鸟们理解Hibernate的基本概念和用法。通过这个实例,我们将深入探讨以下关键知识点: 1. **Hibernate概述**: Hibernate是一个开源的ORM框架,它提供了一种在Java应用中...
本笔记旨在帮助初学者从零基础逐步提升至J2SE(Java Standard Edition)和J2EE(Java Enterprise Edition)的高手水平。J2SE是Java的核心部分,提供了用于桌面应用程序和服务器端开发的基础框架;而J2EE则是Java在...
SSH框架整合是Java Web开发中的一个经典组合,包括Struts2、Spring和Hibernate。这个"ssh框架整合demo"提供了一个完整的、适用于初学者的项目模板,帮助开发者快速理解和搭建基于这三个框架的应用。以下是对这些框架...
Hibernate是Java开发中的一款持久化框架,它简化了与数据库之间的交互,使得对象关系映射(ORM)变得更加简单。以下是对Hibernate流程的详细解释: 1. **选择Hibernate库**: 在开始使用Hibernate之前,你需要确定一...
标签 "java javaweb" 明确了这个项目是关于Java和Java Web开发的,这意味着它可能包含Servlets、JSP(Java Server Pages)、Spring框架、Hibernate ORM或其他相关技术。 压缩包内的文件: 1. **mooc_problem.sql**...