随笔分类 -  hibernate

1
摘要:采用多对一关联,如果一的那端删除了,多的这端无法感知,虽然数据库中可以通过外键配置将多的一端置空,可是在hibernate里面我暂时不知道如何处理。目前采用的方式:1、首先,数据库中需要配置好外键,保证数据库中的数据是正确的。2、在hibernate的many-to-one元素中增加一个属性:not... 阅读全文
posted @ 2014-11-19 14:31 于辰 阅读(281) 评论(0) 推荐(0)
摘要:一般Session的缓存被称为Hibernate的第一级缓存,SessionFactory的外置缓存是一个可配置的缓存插件,称为Hibernate的第二级缓存。一、缓存的基本原理: 1、持久化层的缓存的范围: A、事务范围:缓存只被当前事务访问。 B、进程范围:缓存被进程内的所有事务共... 阅读全文
posted @ 2014-06-15 16:06 于辰 阅读(310) 评论(0) 推荐(0)
摘要:一、多个事务并发运行时的并发问题: 总结为第一类丢失更新、脏读、虚读、不可重复读、第二类丢失更新。 1、第一类丢失更新:撤销一个事务时,把其他事务已提交的更新数据覆盖。 2、脏读:一个事务读到另一个事务未提交的更新数据。 3、虚读(幻读):一个事务读到另一个事务已提交的新插入的数据。 4、... 阅读全文
posted @ 2014-06-15 14:33 于辰 阅读(831) 评论(0) 推荐(0)
摘要:一、数据库事务的概念: 数据库的ACID特征:Atomic、Consistency、Isolation、Durability。原子性、一致性、隔离性、持久性。不同的隔离级别引发的不同问题。 事务的ACID特征是由数据库管理系统来实现的。 数据库管理系统通过锁机制来实现事务的隔离性。二、声明事务... 阅读全文
posted @ 2014-06-14 21:55 于辰 阅读(288) 评论(0) 推荐(0)
摘要:一、配置数据库连接池: 1、使用默认的数据库连接池: Hibernate提供了默认了数据库连接池,它的实现类为DriverManegerConnectionProvider,如果在Hibernate的配置文件中没有明确配置任何连接池,Hibernate就会使用这个默认的连接池。 注意:... 阅读全文
posted @ 2014-06-14 21:09 于辰 阅读(209) 评论(0) 推荐(0)
摘要:本节介绍HQL和QBC的高级用法:各种连接查询、投影查询、报表查询、动态查询、集合过滤和子查询等。另外将归纳优化查询程序代码,从而提高查询性能的各种技巧。一、连接查询: HQL与QBC支持的各种连接类型: 在程序中指定的连接查询类型HQL语法QBC语法适用范围内连接innerjoin或者j... 阅读全文
posted @ 2014-06-14 18:32 于辰 阅读(356) 评论(0) 推荐(0)
摘要:Hibernate提供了以下几种检索对象的方式:A、导航对象图检索方式。B、OID检索方式。Session.get() load();C、HQL检索方式。Query.D、QBC检索方式。Query By Criteria.E、本地SQL检索方式。一、HQL检索方式:Hibernate Query L... 阅读全文
posted @ 2014-06-12 23:35 于辰 阅读(216) 评论(0) 推荐(0)
摘要:本文依旧以Customer类和Order类进行说明。一、引言: Hibernate检索Customer对象时立即检索与之关联的Order对象,这种检索策略为立即检索策略。立即检索策略存在两大不足: A、select语句太多,而且会出现N+1的问题。所谓N+1,1是指先查出所有的Custome... 阅读全文
posted @ 2014-06-11 22:48 于辰 阅读(208) 评论(0) 推荐(0)
摘要:本文以Customer和Address类的关系为例说明一对一关联映射;以Category和Item类的关系说明多对多关联关系。一、映射一对一关联: 分两种情况:按照外键映射和按照主键映射。这两种方式的区别在于对应表结构的不同。 1、按照外键映射: 实例代码:Customer.hbm.xml:A... 阅读全文
posted @ 2014-06-10 22:06 于辰 阅读(224) 评论(0) 推荐(0)
摘要:一、映射Set(集):未排序,无重复。 实例代码: 参数说明:name:指定属性名。table:指定与属性名对应的表名。lazy:是否延迟加载。:指定IMAGES的外键。:指定和images集合中元素对应的字段为FILENAME。二、映射Bag(包):未排序,允许重复。 Hibern... 阅读全文
posted @ 2014-06-09 21:37 于辰 阅读(370) 评论(0) 推荐(0)
摘要:Hibernate采用映射类型作为Java类型和SQL类型的桥梁,对应type属性。分为两种:内置映射类型和客户化映射类型。一、内置映射类型: 1、Java基本类型的Hibernate映射类型: Java基础类型的Hibernate映射类型Hibernate映射类型Java类型标准SQL类型... 阅读全文
posted @ 2014-06-04 22:04 于辰 阅读(505) 评论(0) 推荐(0)
摘要:一、使用组成关系的原则: 在不导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系,因为建立多个表的连接是很耗时的操作。 举例说明:Customer类中的Address属性,可以通过组件的方式来映射,避免了额外建立一张ADDRESS表,还能达到对象化操作的目的。 配置文件: ... 阅读全文
posted @ 2014-06-03 21:58 于辰 阅读(291) 评论(0) 推荐(0)
摘要:一、与触发器协同工作: 当Hibernate与数据库的触发器协同工作时,会出现以下两类问题: 1、触发器使Session缓存中的数据和数据库中的不一致: 出现此问题的原因是触发器运行在数据库内,它执行的操作对Session是透明的。 解决方案:在执行完包含有触发器的操作之后,立刻调用... 阅读全文
posted @ 2014-05-29 22:36 于辰 阅读(225) 评论(0) 推荐(0)
摘要:一、Hibernate缓存简介: Session接口是Hibernate向应用程序提供的操纵数据接口的最主要接口,它提供了基本的保存、更新、删除和加载Java对象的方法。 Session具有一个缓存,位于缓存中的对象称为持久化对象,Session能够在某些时间点来同步更新数据库,这一过程即为清理... 阅读全文
posted @ 2014-05-25 23:05 于辰 阅读(234) 评论(0) 推荐(0)
摘要:关联是有方向的,包含单向关联和双向关联。分别讨论。本文以客户Customer和订单Order来进行讨论:一个Customer有多个Order,每个Order对应一个Customer。Customer对象代码:public class Customer { private long id; pri... 阅读全文
posted @ 2014-05-23 22:19 于辰 阅读(201) 评论(0) 推荐(0)
摘要:Hibernate使用对象标识符(OID)来建立内存中对象和数据库表中记录的对应关系,对象的OID和数据库的主键对应。为了保证OID的唯一性和不可变性,应该让Hibernate来为OID赋值。Hibernate通过标识符生成器来为OID赋值。一、指定标识符生成器: 使用元素的子元素来指定。Hi... 阅读全文
posted @ 2014-05-22 22:14 于辰 阅读(1084) 评论(0) 推荐(0)
摘要:一、hibernate访问持久化类属性的策略: 在元素中的access属性用于指定Hibernate访问持久化类属性的方式。 常见的方式如下: 1、property:默认值。hibernate通过相应的getXXX()和setXXX()方法。 2、field:hibernate运用反... 阅读全文
posted @ 2014-05-21 23:09 于辰 阅读(642) 评论(0) 推荐(0)
摘要:1、直接通过JDBC API持久化实体域对象: A、java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接。 Connection:代表数据库连接。 Statement:负责执行SQL语句。 PreparedStatement:负责执... 阅读全文
posted @ 2014-05-20 22:27 于辰 阅读(284) 评论(0) 推荐(0)
摘要:1、环境配置: web容器:tomcat6.0 JDK:1.7.0_51 hibernate:4.2.0.Final 操作系统:WIN8 64位 数据库:mysql Ver 14.12 Distrib 5.0.18, for Win32 (ia32)2、参考书目: A、《精通Hiber... 阅读全文
posted @ 2014-05-20 16:52 于辰 阅读(171) 评论(0) 推荐(0)
摘要:一、聚集函数的使用:avg(...), sum(...), min(...), max(...)count(*)count(...), count(distinct ...), count(all...)public DailyStatistics getPreviousDayStatistics(Integer dateNumber) { String hql = "from DailyStatistics bean where bean.dateNumber=" + "(select max(ds.dateNumber) from Dai... 阅读全文
posted @ 2014-01-20 13:53 于辰 阅读(358) 评论(0) 推荐(0)

1