- 博客(18)
- 收藏
- 关注
原创 精通Hibernate——映射组成关系
建立域模型与关系型数据模型有着不同的出发点。域模型是由程序代码组成,通过细化持久化类的粒度提供代码可重用度,简化编程。关系数据模型由关系数据组成。存在数据冗余的情况下,需要把粗粒度的表拆分为具有外键参照关系的几个细粒度表,从而节省表的存储空间;另一方面在没有数据冗余的前提下,应尽可能减少表的数量,简化表之间的参照关系,以便提高数据库的访问速度。 由于建立域模型和关系型数据的原则不一样,使得持久化类
2015-08-31 16:53:05 954
原创 精通Hibernate——Hibernate使用触发器需要注意的两点
数据库系统有时会利用触发器来完成某些业务规则。触发器在接收到特定的事件时被激发,执行事先定义好的一组数据库操作。能激发触发器运行的时间可以分为以下几种: 1.插入事件,insert 2.更新记录事件,update 3.删除记录事件,delete Hibernate与数据库中的触发器协同工作时会造成两类问题: 1.触发器使Session的缓存中的数据与数据库不一致 在激发执行触发器之后在执
2015-08-29 19:34:36 4102
原创 精通Hibernate——级联操纵对象
当我们加载一个类时session会加载所有和该类直接关联或者间接关联的对象。 在对象关系映射文件中,用于映射持久化类之间关联关系的元素,如、和元素,都有一个cascade属性,他用于指定如何操纵与当前关联的对象,他的可选属性如下: none:在保存、更新或删除对象时,忽略其他关联的对象,他是cascade默认属性 save-update:当通过session的save、update以及save
2015-08-29 17:23:33 936
原创 精通Hibernate——Session的保存、更新、删除和查询
session的save方法 使一个临时对象变为持久化对象。 session的save方法完成以下操作: 1、把customer对象加入到缓存中,使他变为持久化对象 2、选用映射文件指定的标识符生成器为持久化对象分配唯一的OID。Customer.hbm.xml文件中id元素的 子元素指定标识符生成器:<generator><id name="id" column="ID" >
2015-08-20 19:18:01 1988
原创 Spring学习笔记——Spring事务只对运行时异常回滚
我们在使用Spring时候一般都知道事务在遇到异常的时候会回滚,岂不知Spring的事务默认只有在发生运行时异常即:RunTimeException时才会发生事务,如果一个方法抛出Exception或者Checked异常Spring的事务并不会回滚。 下面我们来看看异常的分类,异常一般分为Checked异常和RunTime异常。 CheckedException: Java认为Checked异
2015-08-20 18:34:58 4943
原创 深入理解JVM:垃圾收集器与内存分配策略
堆里面存放着Java世界几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还存活,哪些已经死去。判断对象的生命周期是否结束有以下几种方法 引用计数法 具体操作是给对象添加一个引用计数器,每当有一个地方引用时,计数器的值就加1,;当引用失效时,计数器就减1;任何时刻计数器为0的对象就 是不可能再被使用的。客观的说引用计数器算法实现简单,判定效率也很高,在大部分情况
2015-08-18 20:05:03 1052
原创 精通Hibernate——Hibernate中Java对象的状态详解
Hibernate中对于要持久化的Java对象在他的生命周期中需要经历以下几种状态: 1、临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于session的缓存中。处于临时状态的Java对象被称为临时对象。 2、持久化状态(persistent):已经被持久化,加入到session中,处于持久化的状态Java对象被称为持久化对象。 3、游离状态(detached):已
2015-08-13 19:15:55 1470
原创 深入理解JVM:OutOfMemory实战
除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(OOM),下面我们来详细分析。 Java堆溢出 Java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制来清除这些对象,那么对象数量到达最大堆容量限制后就会产生内存溢出异常。例如:// VM Args:-Xms20m -Xmx20m -XX:+HeapD
2015-08-13 18:24:11 1891 4
原创 精通Hibernate——理解HibernateSession缓存
如何希望一个Java对象一直处于生命周期中,就必须保证至少有一个变量引用他,或者在一个Java集合中存放了这个对象的引用。在session接口的实现类SessionImpl中定义了一系列的Java集合,这些Java集合构成了session的缓存。例如:private final Map entitiesByKey;//....entitiesByKey.put(key,Object);// 向s
2015-08-12 19:38:53 845
原创 深入理解JVM:HotSpot虚拟机对象探秘
对象的创建 java是一门面向对象的语言,在Java程序运行过程中无时无刻有Java对象被创建出来。在语言层面上,创建对象(克隆、反序列化)通常是一个new关键字而已,而在虚拟机中,对象的创建过程如下: 1、当虚拟机遇到new指令时,首先将去检查这个指令参数是否能在常量池中定位到一个类的引用符号,并且检查这个符号引用代表的类是否被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。
2015-08-11 19:17:17 2178 2
原创 深入理解JVM:JVM运行时数据区域分类
JVM在执行java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途和创建、销毁时间。有些区域随着虚拟机的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范1.7》规定,Java虚拟机所管理的内存分为以下几个区域: 程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存 程序计数器 是一块较小的内存
2015-08-09 19:43:49 2114 1
原创 精通Hibernate——Java对象在JVM中的生命周期
当应用程序通过new语句创建一个对象时,JVM会为这个对象分配一块内存空间,只要这个对象被引用变量引用,他就一直存在在内存当中。当这个对象不被任何对象引用的时候,他的生命周期就意味着结束,JVM会在适当的时候回收这个对象。下面通过代码来演示下生命周期:Customer c = new Customer("Tom",new HashSet());Order o1 = new Order("Tom_o
2015-08-05 19:27:13 921
原创 精通Hibernate——映射一对多双向自身关联关系
首先我们来看下图: 每种商品类别代表一个Category对象,每一个Category可以和父列表关联,同时也可以和子类别关联,为了表达这种一对多的双向自身关联关系可以在Category类中定义两个属性: parentCategory:引用父类别对象 childCategories:引用一组子类别对象 下面看看Category的源代码:public class Category imp
2015-08-05 19:24:48 1261
原创 ExtJS的定时调用函数
<link rel="stylesheet" type="text/css" href="<%=basePath %>/ext-3.4/resources/css/ext-all.css"> <script type="text/javascript" src="<%=basePath%>/ext-3.4/adapter/ext/ext-base.js"></script> <scr
2015-08-05 19:21:30 2525
原创 精通Hibernate——建立双向一对多关联
当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象或者一组与他关联的对象。 对象位于内存中,在内存中从一个对象导航到另一个对象显然比到数据库中查询数据速度快多了。类与类之间到底建立双向还是单向都是由业务决定。以Customer和Order为例,如果软件应用有大量这样的需求: 根据客户可以查询该客户所有的订单 根据给定的订单可以查询发出订单的客户 以上需求就需要我们为Custome
2015-08-04 19:43:09 697
原创 ExtJS的document使用
<script type="text/javascript"> // document是最重要的window对象,有了document对象引用可以操作HTML页面中所有元素 Ext.onReady(function(){ // 创建div Ext.getBody().createChild({
2015-08-04 17:19:25 1500
原创 ExtJS的History使用
// 窗体对象有个记录历史的对象——history,使用这个对象可以实现上一页、下一页等效果。 // 例如:history.go()下一页,history.go(-1)上一页 // 在使用Ext.history之前,必须现在页面中放置一个表单元素,可以直接将HTML代码写到页面中,也可以使用ExtJs的DOM接口来创建 // Ext.getBody()
2015-08-04 17:16:27 1890
原创 Pdf与Base64编码之间的转换
在我们的工作有时候我们需要将图片或者pdf文件转换为Base64编码,然后从服务器端下载传输到本地,在这里我列举下两者之间的转换方法: Base64编码转换为pdf:/** * Description: 将base64编码内容转换为Pdf * @param base64编码内容,文件的存储路径(含文件名) * @Author fuyuwei * Creat
2015-08-03 22:09:25 48194 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人