HQL是Hibernate的面向对象的查询语句。使用HQL,首先要得到session对象,然后编写HQL,以HQL语句为参数调用session的createQuery方法创建查询对象。如果HQL包含参数,则调用Query的set方法为参数赋值。调用Query对象的list或者uniqueResult方法返回查询结果列表(持久化实体集)。
Hibernate中的继承指的是实体类之间的继承。能够继承属性。本例中书中使用了Person、Customer、Manager和Employee这四个实体类来距离。其中Person衍生出了Customer和Employee,而Employee又衍生出了Employee,所以说Employee的属性是最多的。除此之外,Person还有一个组件属性Address。Customer与Employee是N
占坑
双向1-N关联对于1-N关联,Hibernate推荐使用双向关联,而且不要让1的一端控制关联关系,而使用N端控制。双向的1-N关联与N-1关联完全相同,两端都需要增加对关联属性的访问,N的一端增加引用到关联实体的属性,1的一端增加集合属性,集合元素为关联实体。无连接表的双向1-N关联N端使用@ManyToOne来修饰代表关联实体的属性,1端使用OneToMany来修饰。由于不希望1端控制关联关系,
之前我们接触的,都是独立的持久化类,最多也就是某一个集合作为属性,或者集合里面套集合,或者自定义一个组件作为属性。实际上很少有完全独立的对象,对象间往往需要互相访问。这种相互的联系我们成为关联关系。单向N-1关联这种关联关系非常常见,比如说多个人对应同一个住址,我们只需要通过人找地址,而不需要去找某个地址都有哪几个人。为了让两个持久化类支持这种映射关系,我们需要在N添加一个属性,引用1端的关联实体
当持久化的属性并不是基本数据类型,也不是字符串,日期等变量,而是一个复杂类型的对象,这个对象就称为组件属性。在持久化过程中,它仅仅被当做值类型,而并非引用另一个持久化类实体。组件属性的类型可以是任意的自定义类。@Entity @Table(name="persona_inf") public class PersonA { @Id @Column(name
映射集合属性集合属性也非常常见,例如每个人的考试成绩是一个典型的Map结构。集合属性份两种,一种是单纯的集合,例如LIst、Set或者数组。另一种是Map结构的集合属性,每个属性值都有对应的key映射。Hibernate要求持久化集合值字段必须声明为接口,这是因为当程序持久化某个实例时,Hibernate会自动把程序中的集合实现类替换成Hibernate自己的集合实现类。两个持久化对象不能共享同一
在之前的例子中,我们使用了@Entity、@Table、@Id、@GeneratedValue等注解,将一个不同的POJO变成PO类。下面让我们来详细介绍一下Hibernate中的各种注解。@Entity:被该注释修饰的POJO就是一个实体。使用该注解能够制定一个name属性,用于指定实体类的名称。但平时我们无需指定,因为系统会默认以该类的名字作为实体类的名称。@Table:该注解指定持久化类所映
在之前的例子中,我们使用了@Entity、@Table、@Id、@GeneratedValue等注解将一个普通的java类变成了PO。实际上Hibernate还允许我们使用JPA提供的XML配置文件,或者Hibernate传功XML映射文件配置。第一种是主流。映射属性
Hibernate是一个纯粹的ORM框架,程序员只需要关心对象,属性,而无须理会底层的数据表,数据列。持久化类的要求Hibernate采用低浸入设计,因此它对于持久化类的要求非常少。它需要提供一个无参数的构造器,以便hibernate能够创建持久化实例。至少应该是包可见的。提供一个标识属性,一般为数据库表的主键字段。它可以叫任何名字,是任何基本类型每个成员变量需要有set与get方法。是非fina
Hibernate的出现是为了解决面向对象编程与关系数据库之间的连接问题。Hibernate不仅管理java类到数据库表的映射关系,还提供数据库查询和获取数据的方法。它是一种ORM(Object/Relation Mapping),是先进的面向对象编程语言与底层的落后的关系数据库发展不协调的产物。ORM能够将数据库表中的一行信息映射成一个持久化类实例,而每一行的每一条数据就是实例的一个属性。有了O
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号