文档章节

Hibernate中的一些关键字理解

jj_soft
 jj_soft
发布于 2016/06/04 15:25
字数 1078
阅读 7
收藏 0

ORM的理解:

ORM(Object/Relation Mapping): 对象/关系映射
ORM 主要解决对象-关系的映射:

ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。
ORM 采用元数据来描述对象-关系映射细节, 元数据通常采用 XML 格式, 并且存放在专门的对象-关系映射文件中.
元数据:描述数据的数据,

Object.hbm.xml文件:

Hibernate 将根据这个映射文件来生成各种 SQL 语句 映射文件的扩展名为 .hbm.xml

这个文件的功能:
      指定持久化类的OID 和表的主键的映射

映射类的属性和表的字段

指定对象标识符生成器, 负责为 OID 生成唯一标识符

指定类和表的映射

POJO(Plain Old Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑

Configuration 类负责管理 Hibernate 的配置信息。包括如下内容:

Hibernate 运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件)。
持久化类与数据表的映射关系(*.hbm.xml 文件)
创建 Configuration 的两种方式 属性文件(hibernate.properties): Configuration cfg = new Configuration();
Xml文件(hibernate.cfg.xml) Configuration cfg = new Configuration().configure();
   Configuration 的 configure 方法还支持带参数的访问: File file = new File(“simpleit.xml”); Configuration cfg = new Configuration().configure(file);

configuration=Hibernate.cfg.xml+pojo.hbm.xml

SessionFactory:

针对单个数据库映射关系经过编译后的内存镜像,是线程安全的。

SessionFactory 对象一旦构造完毕,即被赋予特定的配置信息

SessionFactory是生成Session的工厂 构造

SessionFactory 很消耗资源,一般情况下一个应用中只初始化一个 SessionFactory 对象。

Hibernate4 新增了一个 ServiceRegistry 接口,所有基于 Hibernate 的配置或者服务都必须统一向这个 ServiceRegistry 注册后才能生效 Hibernate4 中创建 SessionFactory 的步骤

//1. 创建一个 SessionFactory 对象
        SessionFactory sessionFactory = null;
        
        //1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和 对象关系映射信息
        Configuration configuration = new Configuration().configure();
        
        //4.0 之前这样创建
//        sessionFactory = configuration.buildSessionFactory();
        
        //2). 创建一个 ServiceRegistry 对象: hibernate 4.x 新添加的对象
        //hibernate 的任何配置和服务都需要在该对象中注册后才能有效.
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
        
        //3).
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);

Session:

Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作。此对象的生命周期很短。Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处。相当于 JDBC 中的 Connection。
持久化类与 Session 关联起来后就具有了持久化的能力。

Transaction:
代表一次原子操作,它具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作。 Transaction tx = session.beginTransaction();

Hibernate 配置文件的两个配置项
hbm2ddl.auto:该属性可帮助程序员实现正向工程, 即由 java 代码生成数据库脚本, 进而生成具体的表结构. 。取值 create | update | create-drop | validate create : 会根据 .hbm.xml 文件来生成数据表, 但是每次运行都会删除上一次的表 ,重新生成表, 哪怕二次没有任何改变 create-drop : 会根据 .hbm.xml 文件生成表,但是SessionFactory一关闭, 表就自动删除 update : 最常用的属性值,也会根据 .hbm.xml 文件生成表, 但若 .hbm.xml 文件和数据库中对应的数据表的表结构不同, Hiberante 将更新数据表结构,但不会删除已有的行和列 validate : 会和数据库中的表进行比较, 若 .hbm.xml 文件中的列在数据表中不存在,则抛出异常 format_sql:是否将 SQL 转化为格式良好的 SQL . 取值 true | false

© 著作权归作者所有

下一篇: JAVA正则表达式
jj_soft
粉丝 1
博文 96
码字总数 74097
作品 0
广州
程序员
私信 提问
Java 进阶面试问题列表

翻译自Java developer interview questions: The hard part 面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(cou...

大黄有故事
2017/01/17
0
0
Hibernate Search 4.4.0.Alpha2 发布

Hibernate Search 4.4.0.Alpha2 发布了,包含一些小的 bug 修复,对代码进行优化以及更新一些依赖包和小的性能提升。详情请看 changelog on JIRA. Hibernate Search的作用是对数据库中的数据...

红薯
2013/09/19
444
0
Hibernate ORM 5.0.0.CR4 发布

Hibernate ORM 5.0 (5.0.0.CR4) 第四个候选版本发布了,主要是修改一些设置的默认值,此外还修复和完善了文档。 此版本主要改进: 默认 ImplicitNamingStrategy 标识符生成器映射 关键字自动...

叶秀兰
2015/08/06
1K
15
spring data jpa 初实践 简单搭建spring+hibernate jpa

关于spring data jpa 要了解spring data jpa 首先要了解什么是jpa JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中...

蓝薯
2016/12/26
776
10
hibernate hql 大全

转自:http://www.cnblogs.com/bobomail/archive/2005/09/20/240352.html Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有...

ForingY
2015/11/25
63
0

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
16分钟前
2
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
19分钟前
2
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
49分钟前
6
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
59分钟前
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部