自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

成长的足迹

见证个人成长,分享技术经验

  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 Hibernate中连接数据库的方法概述及DataSource方法

作为一款ORM的工具,Hibernate的一个重要功能是为应用提供对数据库的连接,这被称为ConnectionProvider。Hibernate支持多种对数据库的连接实现:DataSourcec3p0proxoolhikari

2016-06-27 17:16:55 7327 1

原创 Hibernate中持久化上下文的flush操作之一MANUAL

对于Hibernate中的两种持久化上下文,JPA的EntityManager和Hibernate的Session,两者都提供了flush()方法。任何时候在应用中调用该方法,则触发持久化上下文与数据库的同步。除此之外,还可以为Hibernate的Session设置flush模式为MANUAL(JPA的EntityManager不支持),即Hibernate的Session只支持手工执行flu

2016-06-21 15:17:30 939

原创 Hibernate中持久化上下文的flush操作之一ALWAYS

在Hibernate中,持久化上下文Session还支持ALWAYS的flush模式(JPA不支持)。在这种flush模式下,执行native SQL查询也将触发Session执行flush操作,示例如下:Person person = new Person("John Doe");entityManager.persist(person);//flush executedSess

2016-06-21 14:42:14 490

原创 Hibernate中持久化上下文的flush操作之一COMMIT

在Hibernate中持久化上下文的flush操作模式中,JPA还支持COMMIT(JPA只支持AUTO和COMMIT两种)。对于COMMIT的flush操作模式,JPA针对HQL查询和native SQL查询有不同的执行:对于HQL查询,无论是否涉及到了被缓冲的Entity对象,都只会在当前事务提交的时候执行flush操作对于native SQL查询,如果涉及到了被缓冲的Entity

2016-06-21 14:34:29 3726

原创 Hibernate中持久化上下文的flush操作之一AUTO

Hibernate中持久化上下文的flush操作模式默认即为AUTO。在这种模式下,flush操作往往在如下场景下自动执行:遇到持久化上下文的事务提交,那么在事务提交之前执行flush操作在即将执行的HQL查询中涉及到了被缓冲的Entity对象在即将执行的native SQL查询中涉及到了被缓冲的Entity对象下面以JPA的EntityManager为例介绍flushMode

2016-06-21 14:19:06 2210

原创 Hibernate中持久化上下文的flush操作概述

Hibernate中,持久化上下文(如JPA的EntityManager或Hibernate的Session)是所有Entity对象的内存工作空间。持久化上下文作为一个事务级别的“write-behind”缓存,负责维护其中管理的各个Entity对象的状态。任何对Entity对象的状态的修改,首先应用于持久化上下文的内存缓存中,然后在flush操作的时候才会同步存储到对应的数据库中。持久化上下

2016-06-20 16:56:05 1817

原创 Hibernate中Entity对象状态的检测

根据与持久化上下文的联系不同,Hibernate应用中的Entity对象可能处于不同的状态,那么持久化上下文如何检测Entity对象的状态呢?持久化上下文提供了专门的方法检测给定的Entity对象的状态。1. 检测Entity对象是否处于managed/persistent状态对于Hibernate的Native API,示例如下:boolean contained = session

2016-06-17 14:41:59 2263

原创 Hibernate中操作managed/persistent状态的Entity对象使之成为detached状态的Entity对象

Hibernate中处于managed/persistent状态的Entity对象,通过持久化上下文(如Session或EntityManager)能够自动关联到数据库中的对象。这样,在Hibernate应用中对managed/persistent状态的Entity对象的操作将会同步到数据库中。但是,当需要批量修改大量Entity对象时,这种对各个Entity对象的自动同步将会造成数据库性能压

2016-06-17 14:16:49 3308

原创 Hibernate中处于detached状态的Entity对象融合(merge)得到另一个persistent状态的Entity对象

在hibernate应用中,处于detached状态的Entity对象,是指那些在数据库中有对应的记录,但是由于持久化上下文关闭close(),或持久化上下文清空clear(),或者被持久化上下文删除evict(),而导致与持久化上下文不再关联的Entity对象。处于detached状态的Entity对象,虽然在Hibernate应用中仍然可以对其进行操作,但是这些操作的结果无法自动同步存

2016-06-16 15:36:28 959

原创 Hibernate中处于detached状态的Entity对象的再次同步

在Hibernate应用中,处于detached状态的Entity对象,是指那些在数据库中有对应的记录,但是由于持久化上下文关闭close(),或持久化上下文清空clear(),或者被持久化上下文删除evict(),而导致与持久化上下文不再关联的Entity对象。处于detached状态的Entity对象,虽然在Hibernate应用中仍然可以对其进行操作,但是这些操作的结果无法自动同步存储到

2016-06-16 15:22:56 1309

原创 Hibernate中Entity对象的重新加载refresh

Hibernate中处于managed/persistent状态的Entity对象可以通过持久化上下文的refresh()方法,重新加载数据库中的数据。这往往发生在持久化上下文中的Entity对象已经过时,数据库中对应的记录被其他持久化上下文修改的情况下。Hibernate Native API示例如下:Person person = session.byId( Person.cl

2016-06-16 11:55:10 2930

原创 Hibernate中操作处于managed/persistent状态的Entity对象

在持久化上下文(如Session或EntityManager)中管理下的的Entity对象,其状态为managed/persistent的。这样的Entity对象随时可能被Hibernate应用操作,所有的修改都暂时保持在持久化上下文中。在持久化上下文关闭或flush的时候,对Entity对象的所有修改都将自动被同步保存到数据库中。通常无需在Hibernate应用中进行任何同步存储的操作。

2016-06-16 11:42:51 882

原创 Hibernate中通过自然标识符(natural-id)对Entity对象的加载

前述对Entity对象的数据库数据的加载,都是通过Entity对象的标识符。实际上,对于能够唯一区分Entity对象的任何属性,都能够用作加载数据库数据的参数。这种,能够唯一区分Entity对象的属性被称为“自然标识符”,即Entity对象天然拥有的唯一属性。与之相对,Entity对象的标识符未必是天然属性,而是人工或自动生成的属性。与通过标识符加载Entity对象的数据类似,通过Enti

2016-06-13 16:38:33 4115

原创 Hibernate中的即时加载

与延迟加载相对的是,在获取Entity对象的引用的同时,加载Entity对象的数据。对于Hibernate的Native API,示例如下:Person person = session.get( Person.class, personId );或者Person person = session.byId( Person.class ).load( personId );

2016-06-13 14:44:14 461

原创 Hibernate中的延迟加载

Hibernate中,对于已经持久化了的Entity对象,其数据存储在数据库中。在Hibernate应用中创建一个新对象时,如果该对象引用了另一个Entity对象,那么可以仅仅创建被引用Entity对象的引用,而不实际加载被引用的Entity对象的数据。这也就是Hibernate的延迟加载。对于Hibernate的Native API,示例如下:Book book = new Book

2016-06-13 14:31:45 348

原创 Hibernate中的删除一个已经持久化了的Entity对象

在Hibernate中,持久化了的Entity对象的状态是managed/persistent。对持久化了的Entity对象执行删除操作,则Entity对象的状态变成removed。removed状态的Entity对象可能仍然存在于Hibernate的缓存中,也可能仍然存在于数据库中,但是Hibernate同步缓存的时候将会同时从Hibernate缓存和数据库中删除。对于Hibernate

2016-06-12 22:09:24 3413

原创 Hibernate中的持久化一个新创建的Entity对象

在Hibernate应用中,新创建一个Entity对象,其状态为transient。要将该Entity对象转变为managed/persistent状态,可以有save()、persist()两种方法,示例如下。save方法:Person person = new Person();person.setId( 1L );person.setName("John Doe");se

2016-06-12 17:23:20 1468

原创 Hibernate中的持久化上下文与Entity对象的状态

Hibernate实质上是一种ORM的解决方案。在这种ORM中,与关系数据库中存储的数据相对应的,就是Hibernate中的持久化上下文中的对象。数据库中的数据由关系数据库维护,Hibernate中的对象由持久化上下文维护。在Hibernate中,提供了两种持久化上下文的实现,一种是Hibernate自身提供的Native API,即org.hibernate.Session。另一种是Hi

2016-06-12 17:01:15 1656

原创 Hibernate 5的启动过程分析之EntityManagerFactory

Hibernate作为一个JPA实现,其启动过程与Hibernate的Native SessionFactory实例的构建过程有很大差异。作为JPA实现,Hibernate必须实现对JPA EntityManagerFactory实例的构建。JPA EntityManagerFactory实例的构建又可以分为2种实现方式,一种是以兼容JPA标准的方式启动(推荐),另一种是以软件厂商私有的独

2016-06-08 12:51:00 3690

原创 Hibernate 5的启动过程分析之SessionFactory

通过前面的学习,我们知道Hibernate提供了2组数据访问API,一个是JavaEE标准的JPA,另一个是Hibernate独有的Hibernate Native API。对应地,Hibernate 5的启动过程也分为两种情况,一种是JPA的EntityManagerFactory实例的构建过程,另一种是Hibernate的Native SessionFactory实例的构建过程。

2016-06-08 12:29:11 4302

原创 Hibernate中的Entity类之间的继承关系之四TABLE_PER_CLASS

对于Hibernate提供的4种兼容JPA的映射策略,这里介绍第四种table-per-concrete-class策略。事实上,从数据库表结构看,这种策略下的每个Entity类都对应一个独立的数据库表。在这种策略中,存在如下特征:父子Entity类也对应一个数据库表 父表中无需设置discriminator列 子表中不仅包含子Entity类特有的全部属性,还包括从父Entity类继承...

2016-06-07 23:34:15 4682 3

原创 Hibernate中的Entity类之间的继承关系之三JOINED

对于Hibernate提供的4种兼容JPA的映射策略,这里介绍第三种Joined table,也被称为table-per-subclass策略。 在这种策略中,存在如下特征:父子Entity类都对应各自的数据库表父表中无需设置discriminator列子表中的主键ID,也是子表的外键,用以指向父表的主键ID。默认父子表中的主键名字相同,也可以在子Entity类中通过如下标注给出列

2016-06-07 22:46:00 1508

原创 Hibernate中的Entity类之间的继承关系之二SINGLE_TABLE

为了解决Entity类的继承与关系数据库表的对应不匹配问题,Hibernate提供了4种兼容JPA的策略,这里介绍第二种Single table。在这种策略中,存在如下特征:数据库中只有一个表,其中包含了继承相关的所有父子Entity类的属性父Entity中有一个特殊的属性作为区分标识1.Single table策略的实现父Entity类定义如下:@Enti

2016-06-06 17:11:25 4253

原创 Hibernate中的Entity类之间的继承关系之一MappedSuperclass

在Hibernate中,Entity类可以继承Entity类或非Entity类。但是,关系数据库表之间不存在继承的关系。那么在Entity类之间的继承关系,在数据库表中如何表示呢?Hibernate提供了4种策略解决Entity类的继承与关系数据库表的对应不匹配问题。这里介绍第一种MappedSuperclass。在这种策略中,存在如下特征:只在Entity类之间存在继承关

2016-06-03 14:07:56 5811

原创 Zuora在线测试题解之Three Page Path

题目记不清楚了,大概是给出用户访问页面的记录(user, page),要求给出最经常被访问的前M个路径,每个路径至少包含n个页面。定义类如下,测试通过。1. 原始数据package com.zuora.interview.path3page;public class UserPage { private String user; private String page;

2016-06-02 14:36:16 1215

digital-7 (mono italic).ttf

A file of ttf

2021-07-22

Flex3中文帮助文档

Flex程序员必备,主要介绍ActionScript 3.0的包和类。

2010-02-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除