Hibernate
Easyean
这个作者很懒,什么都没留下…
展开
-
Hibernate4之原理浅析
[size=medium][color=blue]Hibernate是一个对JDBC轻量封装后的轻量级ORMapping框架[/color]ORMapping原理(Object Relational Mapping)在以前使用的JDBC操作其实就是一个持久化的过程[color=red]JDBC的劣势[/color]:对于小型的应用开发而言,使用JDBC也许还不错。但是对...原创 2012-07-29 17:10:39 · 71 阅读 · 0 评论 -
Hibernate4之Session一级缓存
[size=medium][b]Session缓存的作用:[/b]1.减少访问数据库的频率,应用程序从内存中读取持久化对象的速度显然比到数据库查询数据的速度快多了,因此Session的缓存可以提高数据库的访问性能。2.保证缓存中的对象与数据库中的记录保持同步,当缓存中持久化对象的状态发生了变化,Session并不会立即执行相关的SQL语句,这使得Session能够把几条相关的Sql语句...原创 2012-08-14 16:06:03 · 63 阅读 · 0 评论 -
Hibernate4之Query接口HQL方式查询
[size=medium][color=blue][b]Hibernate实现按条件查询的方式[/b][/color]1:最重要的按条件查询的方法是使用Query接口,使用HQL2:本地查询(native sql):就是使用标准的sql,也是通过Query接口来实现3:按条件查询(Query By Criteria,QBC):使用动态的,面向对象的方式来创建查询4:按样例查询(...原创 2012-08-14 17:52:14 · 283 阅读 · 0 评论 -
Hibernate4之SQLQuery接口SQL方式查询
[size=medium]对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。最简单的情况下,我们可以采用以下形式:[/size][code="java"]List cats = sess.createSQLQuery( "select * from cats").addEntity(Cat.class)...原创 2012-08-15 16:58:00 · 221 阅读 · 0 评论 -
Hibernate4之Criteria接口QBC方式查询
[size=medium][b]分页查询[/b][/size][code="java"]Criteria crit = session.createCriteria(Order.class).setMaxResults(10).setFirstResult(1);crit.list();[/code][size=medium][b]条件查询[/b]一个单独的查询条件是o...原创 2012-08-15 17:15:28 · 105 阅读 · 0 评论 -
Hibernate4性能之批量处理的三种方式
[size=medium]假如有如下程序,需要向数据库里面加如100000条数据[/size][code="java"]Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i...原创 2012-08-15 17:36:22 · 309 阅读 · 0 评论 -
Hibernate4性能之Fetching策略
[size=medium]Hibernate有一些fetching策略,来优化Hibernate所生成的select语句,以尽可能地提高效率。在映射关系中声明fetching策略,定义Hibernate怎样获取其相关的集合和实体。[b]影响关系映射抓取的cfg配置:[/b] [color=green]hibernate.max_fetch_depth[/color]为单向关...原创 2012-08-16 16:59:30 · 100 阅读 · 0 评论 -
Hibernate4之cascade与inverse
[size=medium][b]简单地说,“inverse”决定哪一边来更新外键,而“cascade”决定接下来应该执行什么操作。在关系上来看两者看上去非常相似,但实际上是完全不同的两回事。[/b][color=red][b]inverse[/b][/color]inverse,英文意思是反向,反转。在这里可以理解为控制反转,也就是说实体间的关系由谁控制,所以inverse用在实体...原创 2012-08-16 17:35:42 · 91 阅读 · 0 评论 -
Hibernate4之二级缓存
[size=medium][b]缓存:缓存是什么,解决什么问题?[/b]位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache。缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快。[b]缓存的范围分为3类:[/b][color=blue]1.事务范围(单Session即一级缓存)[/color] 事务范围的缓存只能...原创 2012-08-19 21:38:51 · 210 阅读 · 0 评论 -
Hibernate4之事务机制
[size=medium][b]首先来认识以下J2EE常见的3种事务:[/b][color=blue]1、JDBC事务 [/color]JDBC事务是用Connection对象控制的。JDBC Connection接口(java.sql.Connection)提供了两种事务模式:自动提交和手工提交。 java.sql.Connection 提供了以下控制事务的方法: public ...原创 2012-08-20 15:00:35 · 106 阅读 · 0 评论 -
Hibernate4之getCurrentSession和openSession
[size=medium]在一个应用程序中,[color=blue]如果DAO层使用Spring的hibernate模板[/color],通过Spring来控制session的生命周期,则首选getCurrentSession使用Hibernate的大多数应用程序需要某种形式的“上下文相关的”session,特定的session在整个特定的上下文范围内始终有效。然而,对不同类型的应...原创 2012-08-13 16:39:35 · 142 阅读 · 0 评论 -
Hibernate4之JPA规范配置详解
[size=medium][b][color=red]@Table[/color][/b]Table用来定义entity主表的name,catalog,schema等属性。属性说明:[list][*]name:表名[*]catalog:对应关系数据库中的catalog[*]schema:对应关系数据库中的schema[*]UniqueConstraints:定义一个...原创 2012-08-12 15:18:54 · 207 阅读 · 0 评论 -
Hibernate4之配置详解
[size=medium]Hibernate基本配置其实就是SessionFactory的配置,所有配置都在标签之内。但是标签又可以分成3个部分的配置:[color=red]1.JDBC连接参数的基本配置2.Hibernate连接池的参数配置3.注册ORM映射文件的配置[/color][color=darkblue]Hibernate4和Hibernate3在配置上...2012-07-29 18:23:48 · 173 阅读 · 0 评论 -
Hibernate4之映射基本数据类型
[size=medium]Hibernate的基本映射数据类型是Java基本类型与标准SQL类型相互转换的桥梁,通过Hibernate的基本映射数据类型可以非常方便地将数据从一种形式转换成另一种形式,完成高质量的ORM任务。[b]3种数据类型之间的对应关系[/b][/size][table]|[b]Hibernate映射类型[/b]|[b]Java类型[/b]|[b]标...原创 2012-07-31 10:42:56 · 96 阅读 · 0 评论 -
Hibernate4之主键映射机制
[size=medium][color=olive][b]关系型数据库中依靠主键来区分不同的记录,主键又有自然主键和代理主键之分。[/b][/color][color=red]自然主键[/color]:就是指充当主键的字段本身具有一定的含义,是构成记录的重要组成部分。[color=red]代理主键[/color]:就是指主键字段本身不具有业务含义,只是起到标志的作用,比如自增长...原创 2012-07-31 16:08:32 · 75 阅读 · 0 评论 -
Hibernate4之一对一关联
[size=medium]每个用户注册信息就对应一个登录信息,双方是相互依存的,由于主键共享,如果有任意表的一条记录被删除或者新增,那么另一张表也会删除对应的记录或者新增一条记录。[b]而且一对一不管是save还是update都必须手工维护双向关系[/b]。[color=red]在一对一中,关联关系的对象默认都是使用延迟加载[/color],默认的属性是lazy="proxy",此时默认是会延...原创 2012-08-09 18:05:52 · 81 阅读 · 0 评论 -
Hibernate4之多对一单向关联
[size=medium]一个客户可以有多个订单,订单对应一个客户的关系就是多对一。在这里多对一的关系是@ManyToOne,默认是非延迟加载的。如果要设置懒加载必须设置fetch = FetchType.LAZY,但是既然配置了多对一,肯定是希望加载订单的时候加载出客户信息的。[/size][code="java"]/** * @author Chou * @since ...原创 2012-08-09 18:12:47 · 71 阅读 · 0 评论 -
Hibernate4之一对多双向关联
[size=medium]一个用户可以有多个订单,订单相对于用户的关系就是多对一的关系。在这里一对多的关系是@OneToMany,默认是延迟加载的。当然客户对象相对于订单是级联删除的。[/size][code="java"]/** * @author Chou * @since 2012-8-8 * ...客户实体(一对多双向关联) * */@Entit...原创 2012-08-10 09:59:37 · 71 阅读 · 0 评论 -
Hibernate4之一对多双自身向关联
[size=medium]商品分类信息可以有很多分类信息,每个分类信息都有下级关系和上级关系,所以是一对多双向自身关联.而且当一个有下级关系的对象删除后,其下级对象都会删除。在双向自身关联中@ManyToOne默认是非延迟加载的,所以不用配置fetch属性。而@OneToMany默认是延迟加载的,所以需要配置fetch属性。[/size][code="java"]/** *...原创 2012-08-10 10:06:13 · 129 阅读 · 0 评论 -
Hibernate4之多对多单向关联
[size=medium]多个商品可以在不同的订单中出现,所以商品相对于订单是多对多关系,多对多关系需要新建一个关系表来维护他们之间的关系。在这里多对多关系@ManyToMany,默认是延迟加载的。级联操作默认只会关联到中间表的修改和删除。[/size][code="java"]/** * @author Chou * @since 2012-8-8 * ...订单...原创 2012-08-10 10:18:37 · 64 阅读 · 0 评论 -
Hibernate4之多对多双向关联
[size=medium]在这里多对多关系@ManyToMany,默认是延迟加载的。[/size][code="java"]/** * @author Chou * @since 2012-8-8 * ...订单实体(多对多关系维护方) * */@Entity@Table(name = "TAB_ORDER")@SequenceGenerator(nam...原创 2012-08-10 10:26:35 · 60 阅读 · 0 评论 -
Hibernate4性能之并发和锁机制
[size=medium][b]数据库事务的定义[/b]数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。● 原子性(atomic),事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行● 一致性(consistent),事务在完成时...原创 2012-08-20 16:19:32 · 100 阅读 · 0 评论