随笔分类 - Hibernate
摘要:JPA(Java Persistence API,Java持久化API),定义了对象-关系映射(ORM)以及实体对象持久化的标准接口。JPA是JSR-220(EJB3.0)规范的一部分,在JSR-220中规定实体对象(EntityBean)由JPA进行支持。所以JPA不局限于EJB3.0,而是作为POJO持久化的标准规范,可以脱离容器独立运行,开发和测试更加方便。下面通过一张图来看一下JPA的基本概念。然后再做简要分析。注:不是真正意义的UML图啊,只是画着方便就用rose了。一、EntityManager,EntityManagerFactory,PersistenceContext三者的关
阅读全文
摘要:Pager-taglib,支持多种风格的分页显示。实际上她是一个Jsp标签库,为在JSP上显示分页信息而设计的一套标签,通过这些标签的不同的组合,会形成多种不一样的分页页面,风格各异,她自带的DEMO就有七种左右的分页风格,包括Google的分页风格。而需要订制自已的风格的分页页面也非常简单。pg:pager 这个标签用来设置分页的总体参数,一切分页标签都在其内工作。 url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数 items:总记录数,pager标签正是根据这个值来计算分页参数的 maxPageItems:每页显示的行数,默认为10 maxIndexPage...
阅读全文
摘要:首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持。Spring一方面作为一个轻量级的IoC容器,负责查找、定位、创建和管理对象及对象之间的依赖关系,另一方面能使Struts和Hibernate更好地工作。由SSH构建系统的基本业务流
阅读全文
摘要:Lazy:延迟加载,在真正使用某个对象的时候才正真的去创建,即hibernate才会正真的发出sql语句去加载该对象Lazy的有效期:只有在session打开的时候才有效;session关闭后lazy就没效了。lazy策略可以用在:1、 <class>标签上:可以取值true/false* <property>标签上,可以取值true/false,这个特性需要类增强(不常用)* 设置<class>标签中的lazy="true",或是保持默认(即不配置lazy属性)* 如果lazy的属性值为true,那么在使用load方法加载数据时,只有确
阅读全文
摘要:性能优化是一个很大的话题,大到程序架构优化,数据库设计等,小到一个特定算法,甚至js优化等等。这里我们只简单谈一下hibernate的性能优化。在使用Hibernate的时候,通过正确的方法和策略,可以提高执行效率。(一)抓取策略抓取策略(fetching strategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候, Hibernate如何获取关联对象的策略。抓取策略可以在O/R映射的元数据中声明,也可以在特定的HQL 或条件查询(Criteria Query)中重载声明。例如单端代理,集合代理,批量抓取等设置方式通常为*fetch="join
阅读全文
摘要:集合映射主要包括:set、list、array、map的映射对象模型:映射后的关系模型:映射文件:<hibernate-mapping> <class name="com.jialin.hibernate.CollectionMapping" table="t_collection_mapping"> <id name="id"> <generator class="native"/> </id> <property name="name&
阅读全文
摘要:Component映射在hibernate中Component映射采用<component>标签即可Component是某个实体的逻辑组成部分,它与实体类的主要差别在于,它没有oidComponent在DDD中被称为值类采用Component的好处:实现对象模型的细粒度划分,复用率高,含义明确,层次分明对象模型与关系模型的设计恰恰相反,对象模型一般是细粒度的,关系模型一般是粗粒度的示例:对象模型:关系模型:映射文件:Employee.hbm.xml<hibernate-mapping> <class name="com.jialin.hibernate.
阅读全文
摘要:对象模型示例:继承映射的实现方式有三种:(一)每棵类继承树一张表关系模型:映射文件:<hibernate-mapping package="com.jialin.hibernate"> <class name="Animal" table="t_animal" lazy="false"> <id name="id"> <generator class="native"/> </id> <discriminato
阅读全文
摘要:单向多对多关联映射单向多对多关联对象模型:映射后的关系模型:多对多映射,会产生第三张表来维护关系映射文件:User.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package=&
阅读全文
摘要:单向一对多关联映射映射后的关系模型:映射文件:一对多关联映射和多对一关联映射映射原理是一致的,都是在多的一端加入一个外键,指向一的一端它们的区别在于维护的关系不同:* 多对一维护的关系是:多指向一的关系,有了此关系,在加载多的时候可以将一加载上来* 一对多维护的关系是:一指向多的关系,有了此关系,在加载一的时候可以将多加载上来Group.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN
阅读全文
摘要:双向一对一关联映射与单向一对一关联映射一样,双向映射依然可以采用两种方式实现:1、主键关联;2、唯一外键关联1、主键关联映射出的关系模型与单向一样:映射文件与单向的区别在于:需要在Card加入<one-to-one>标签,指示hibernate将关联对象User根据主键加载上来。<one-to-one>不影响存储,只影响加载User.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping D
阅读全文
摘要:在说Hibernate映射之前,先下了解下面的概念。对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,本质上就是将数据从一种形式转换到另外一种形式。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关
阅读全文
摘要:单向一对一关联映射有两种方式实现一对一关联映射:1、主键关联:让两个实体的主键一样,即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系;数据库表不会有多余的字段来维护它们之间的关系,仅通过表的主键来关联。映射后的关系模型:映射文件:User.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.ne
阅读全文
摘要:上篇中谈了Hibernate的基本映射,这篇开始谈Hibernate的关系映射。关系映射主要包括以下几种映射:我们先从多对一关联映射开始。多对一关联映射原理:在多的一端加入一个外键,指向一的一端,如下图:根据对象模型书写映射文件:在多的一端采用如下标签映射:<many-to-one name="group" column="groupid"/>User.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hiber
阅读全文

浙公网安备 33010602011771号