Hibernate 知识提高】的更多相关文章

主键生成策略有: UUID,increment.Hilo.assigned:对数据库无依赖 identity:依赖Mysql或sql server,主键值不由hibernate维护 sequence:适合于oracle等支持序列的dbms,主键值不由hibernate维护,由序列产生. native:根据底层数据库的具体特性自动选择适合的主键生成策略,如果是mysql或sqlserver,选择identity,如果是oracle,选择sequence. assigned  是在save 之前手动…
一.hibernate背景介绍: 作者: Gavin King 分hibernate ORM(for relation db),OGM(for nosql db),hearch,validator,tools..等模块. Hibernate ORM 最新版本 4.4.5.Fianal. 架构图 二 hibernate.cfg.xml 配置文件详解. <session-factory> 会话工厂中配置 1. 数据库的连接属性 2.连接池数量,是否显示sql.. 3.相应的映射文件位置. 三  *…
一.Hibernate是什么: 它是一个持久化框架,它对JDBC进行了轻量级的封装,简化对数据库的操作,提高开发效率.和另一个持久化框架MyBatis一样,他们操作数据库都是通过一个session对象来进行的,session是由sessionFactory生产的,sessionFactory是通过读取配置文件(hibernate.cfg.xml)而创建的. 二.Hibernate配置文件: 核心配置文件:hibernate.cfg.xml 它是Hiberante的核心配置文件.在该文件里需配置要…
要去面试了,复习一下HIBERNATE的相关知识吧,原来边看视频边写的代码如下,已经分不清先后次序了,大致看一看吧. 先看下总的配置文件hibernate.cfg.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"…
前言: 上一篇简单的讲解了下Hibernate的基础知识.这里对Hibernate比较重要的一些知识点,进行总结和归纳. 手码不易,转载请注明!——xingoo 总结的知识点: 1 关于hibernate映射的实体类标识符访问权限 2 关于对象描述标识符OID及其生成策略 3 Session缓存——清理缓存 4 Session中的状态变更 5 Session中的常用方法 首先简单的看下整理的思维导图,还没有整理完,所以仅仅是一部分而已. 关于Hibernate映射 关于Hibernate的映射要…
 一.乐观锁和悲观锁 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁.   乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用…
一.ORM ORM的全称是Object/Relation Mapping,即对象/关系映射,可以将其理解成一种规范,它概述了这类框架的基本特征:完成面向对象的编程语言到关系数据库的映射.可以把ORM看作应用程序和数据库的桥梁. ORM基本映射方式 1.数据表映射实体类(持久化类):2.数据表中的行映射对象:3.数据表中的字段映射对象的属性. 基本上所有的ORM工具大致都遵循相同的映射思路. 二.Hibernate Hibernate是一款轻量级的持久层框架,它完成了对象模型和基于SQL的关系模型…
Hibernate中共提供了三种检索方式:HQL(Hibernate Query Language).QBC.QBE(Query By Example). HQL 是Hibernate Query Language的简写,即hibernate查询语言:HQL采用面向对象的查询方式. QBC(Query By Criteria) API提供了检索对象的另一种方式,它主要由Criteria接口.Criterion接口和Expresson类组成,它支持在运行时动态生成查询语句. HQL 查询包括以下步…
先上一张图,关于几种关系映射: 抄一段解释: 基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用.关联关系分为上述七种,但是由于相互之间有各种关系,可以简化,例如:多对一与一对多映射,只是侧重的角度不对而已. Hibernate将关系映射分为以上四种,现在来看关系映射其实就两种,甚至一种. 1.从对象的加载方向上分为单向和双向两种.  单向和双向只影响数据的加载,并不影响数据的存储.不论是一对一,一对多还是多对多…
发现了一篇和我类似的学习尚硅谷视频写的文章,内容如下,比我说的详细全面,可以看一下: [原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass ) 抄一段对三种继承关系的解释: Java类中有继承关系,相应的在hibernate中,也有继承关系,子类反应到数据库中,就有多种实现形式了,子类和父类可以映射到同一张表中,子类也可以单独映射成一张表,但是用不同的标签实现,子类表和父类表的关…
一.SessionFactory接口 是单个数据库映射关系(ORM)经过编译后的内存镜像.SessionFactory(的实例)作为应用中的一个全局对象(工厂),可以随处打开/创建一个session,用来进行数据库CRUD操作. SessionFactory的实例是线程安全的,创建和维护SessionFactory实例的代价都很高,这也决定不会频繁地创建它.通常一个应用(数据库)只对应一个SessionFactory(单例),在应用启 动时创建和一次性静态初始化,在应用退出时关闭.Session…
一.Linux之定时任务crond 二.Linux之用户管理 三.Linux之初识磁盘 四.Linux之磁盘管理 五.Linux三剑客-SED 六.Linux三剑客-AWK 七.初识shell编程 八.Linux之网络基础 九.第二阶段作业…
标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC来access DB,我们要先连接数据库,然后与数据库交互,然后关闭连接.使用了Hibernate之后,它实现了对JDBC的封装.跟数据库建立连接和关闭连接都由Hibernate来管理,我们只要写交互代码就可以了. 使用Hibernate,甚至不需要写SQL语句,它会自动帮你生成表 生成SQL语句,…
    作为SSH三大框架之一的Hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷.利用Hibernate框架我们就可以不再编写重复的JDBC代码,不再反复的测试我们的SQL语句写的如何.这里这需要我们简单配置,调用框架给我们提供的方法,就可以完成对数据增删改查的,那么Hibernate到底是个什么样的框架呢?如何使用呢?先看一个关于Hibernate框架的知识体系图: Hibernate有什么好处? :一.Hiberna…
Hibernate为了提高性能,提供了缓存与快照机制. 它的缓存分为一级缓存与二级缓存. Hibernate一级缓存:当一个事务中执行一次Sql语句时,就将返回的结果存储在Session中的Map集合中(当然,还有快照). 测试:(以下所有代码处于try/catch块中) Configuration config=new Configuration().configure();//configure()方法是加载src/hibernate.cfg.xml配置文件 SessionFactory s…
一.持久化对象的唯一标识 java中按内存地址不同区分同一个类的不同对象,关系数据库用主键区分同一条记录,Hibernate使用OID来建立内存中的对象和数据库中记录的对应关系 什么是OID? 解析:OID是持久化与数据表主键对应属性,用来区分持久化对象 二.主键生成策略 increment identity sequence native uuid assigned 1) increment 由hibernate完成 主键递增, 原理:select max(id) , insert时max(i…
本文原文链接:http://hi.baidu.com/ko22223/item/dd9f6900015adc036d904877 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系.Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码.从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系…
1.hibernate中get和load方法有什么不同? (1)执行get方法,会立即加载对象, 执行load方法,若不使用该对象,则不会立即执行查询操作. (2)load 方法可能会抛出 LazyInitializationException 异常: 在需要初始化 代理对象之前已经关闭了 Session (3)若数据表中没有对应的记录, Session 也没有被关闭. get 返回 null load 若不使用该对象的任何属性, 没问题; 若需要初始化了, 抛出异常. 2.增删查改? 3.数据…
参考:http://m.blog.csdn.net/article/details?id=7228061 一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系.Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码.从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系. 二.Hibernat…
根据我司优良传统,必然要由上向下.逐级深入,所以在钻到Hibernate细节之前,先从宏观上行欣赏一下Hibernate.为什么说是欣赏?大家可以自行查阅一下Hibernate知识外的信息,创始人和Hibernate的来源都挺有意思. ORM 众所周知Hibernate是ORM框架,等等,先来说一下ORM,即Objcect Relation Mapping,对象-关系映射,我认为这是Hibernate的操作核心,这个上篇博客简单阐述了一下,学Hibernate时刻注意这点. 优缺点 单纯地说一个…
struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发. 优点: Struts跟Tomcat.Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点.使开发者能更深入的了解其内部实现机制. 除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航.Taglib是Struts的标记库,灵活动用,能大大提高开发效率.另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一…
Hibernate是怎样实现呢?主要是依据反射机制. 现在以一次数据库查询操作分析Hibernate实现原理. 假设有一个用户表(tbl_user),表中字段有id,name,sex.同时有一个实体类(User)与其相对应,查询语句是:  select * from User. 1.在项目启动时,Hibernate配置文件中的内容已经存储在容器中,存储着表与实体中的关系. 2.在执行select * from User 时,会根据反射机制先找到User的全路径名称,进而找到容器中User对应的配…
Struts跟Tomcat.Turbine等诸 多Apache项目一样,是开源软件,这是它的一大优点.使开发者能更深入的了解其内部实现机制. Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和JavaServer Pages(JSP)技术的Web应用时更加容易.Struts框架为开放者提供了一个统一的标准框架,通过使用Struts作为基础,开发者能够更专注 于应用程序的商业逻辑.Struts框架本身是使用Java Servlet和JavaServer Pages技术…
一.延迟载入定义                 延迟载入,也叫懒载入,它是Hibernate为提高程序运行效率而提供的一种机制,即当仅仅有真正使用该对象的数据时才会创建. 说白了,所谓的延迟载入不是在load的时候去数据库载入数据.而是当我在应用程序中真正使用该数据时Hibernate才去查询.载入对应的数据. 二.延迟载入实现原理                 Hibernate中主要是通过代理(proxy)机制来实现延迟载入.即Hibernate丛数据库获取某一个对象数据时.获取某一 个…
一.持久化对象的唯一标识 java中按内存地址不同区分同一个类的不同对象,关系数据库用主键区分同一条记录,Hibernate使用OID来建立内存中的对象和数据库中记录的对应关系 什么是OID? 解析:OID是持久化与数据表主键对应属性,用来区分持久化对象 --------------------------------------------------------------------------------------------------------------------------…
使用参数绑定 使用绑定参数的原因是让数据库一次解析SQL,对后续的重复请求可以使用生成好的执行计划,这样做节省CPU时间和内存. 避免SQL注入. 尽量少使用NOT 如果where子句中包含not关键字,那么执行时该字段的索引失效. 尽量使用where来替换having having在检索出所有记录后才对结果集进行过滤,这个处理需要一定的开销,而where子句限制记录的数目,能减少这方面的开销. 减少对表的查询 在含有子查询的HQL中,尽量减少对表的查询,降低开销. 使用表的别名 当在HQL语句…
1.谈谈你对hibernate的认识和理解 01.全自动的ORM框架 02.子项目 03.面向对象的思想来解决操作数据库 01.hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得程序员可以按照面向对象的思想来操控数据库中的数据 02.hibernate的核心接口有Configuration.SessionFactory.Session.Transaction.Query.首先由Configuration获取配置信息并做一切初始化的工作,接…
http://blog.csdn.net/yerenyuan_pku/article/details/70768603 HQL优化 使用参数绑定  使用绑定参数的原因是让数据库一次解析SQL,对后续的重复请求可以使用生成好的执行计划,这样做节省CPU时间和内存. 避免SQL注入. 尽量少使用NOT 如果where子句中包含not关键字,那么执行时该字段的索引失效. 尽量使用where来替换having having在检索出所有记录后才对结果集进行过滤,这个处理需要一定的开销,而where子句限制…
懒加载(FatchType.LAZY)是Hibernate为提高程序执行效率而提供的一种机制,简单说就是只有正真使用其属性的时候,数据库才会进行查询. 具体的执行过程就是:Hibernate从数据库获取某一个对象数据时.获取某一个对象的集合属性值时,或获取某一个对象所关联的另一个对象时,由于没有使用该对象的数据,Hibernate并不是数据库加载真正的数据,而只是为该对象创建一个代理对象来代表这个对象,这个对象上的所有属性都是默认值:只有在真正需要使用该对象的数据时才创建这个真实对象,真正从数据…
状态分类 在Hibernate框架中,为了管理持久化类,Hibernate将其分为了三个状态: 瞬时态(Transient Object) 持久态(Persistent Object) 脱管态(Detached Object) 有很多人好像对这些概念和它们之间的转换不太明白,那么本篇文章就是来解决这些问题的,看完了还不会你来找我.(开个玩笑~~) 详细描述 我们先来详细地了解一下三种状态: 1.瞬时态 对象由new操作符创建,且尚未与Hibernate中的Session关联的对象被认为处于瞬时态…