- 浏览: 115162 次
- 性别:
- 来自: 上海
文章分类
最新评论
实体类------>表
实体类的设计原则:
* 实现一个默认(无参)的构造方法(constructor)
* 提供一个标识属性(identifier property)
* 使用非final的类
* 为持久化字段声明访问器(accessors),即get/set方法
实体类中的普通属性----->表字段
采用<class>标签映射成数据库表,通过<property>标签将普通属性映射成表字段
所谓普通属性不包括自定义类、集合和数组
注意:表或字段与sql关键字一样,必须重名称
<hibernate-mapping/>标签
<hibernate-mapping
schema="schemaName" (1)
catalog="catalogName" (2)
default-cascade="cascade_style" (3)
default-access="field|property|ClassName" (4)
default-lazy="true|false" (5)
*auto-import="true|false" (6)
*package="package.name" (7)
/>
(6) auto-import (可选 - 默认为 true): 指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。
(7) package (可选): 指定一个包前缀,如果在映射文档中没有指定全限定的类名, 就使用这个作为包名。
<class name="User">
<id name="id">
<generator class="uuid"/>
</id>
<property name="name"/>
<property name="password"/>
<property name="createTime"/>
<property name="expireTime"/>
</class>
</hibernate-mapping>
<class
*name="ClassName" (1)
*table="tableName" (2)
*discriminator-value="discriminator_value" (3)
mutable="true|false" (4)
schema="owner" (5)
catalog="catalog" (6)
proxy="ProxyInterface" (7)
*dynamic-update="true|false" (8)
*dynamic-insert="true|false" (9)
select-before-update="true|false" (10)
polymorphism="implicit|explicit" (11)
where="arbitrary sql where condition" (12)
persister="PersisterClass" (13)
*batch-size="N" (14)
*optimistic-lock="none|version|dirty|all" (15)
*lazy="true|false" (16)
entity-name="EntityName" (17)
check="arbitrary sql check condition" (18)
rowid="rowid" (19)
subselect="SQL expression" (20)
*abstract="true|false" (21)
node="element-name"
/>
(1) name (可选): 持久化类(或者接口)的Java全限定名。 如果这个属性不存在,Hibernate将假定这是一个非POJO的实体映射。
(2) table (可选 - 默认是类的非全限定名): 对应的数据库表名。
(3) discriminator-value (可选 - 默认和类名一样): 一个用于区分不同的子类的值,在多态行为时使用。它可以接受的值包括 null 和 not null。
(8) dynamic-update (可选, 默认为 false): 指定用于UPDATE 的SQL将会在运行时动态生成,并且只更新那些改变过的字段。
(9) dynamic-insert (可选, 默认为 false): 指定用于INSERT的 SQL 将会在运行时动态生成,并且只包含那些非空值字段。
(14) batch-size (可选,默认是1) 指定一个用于 根据标识符(identifier)抓取实例时使用的"batch size"(批次抓取数量)。
(15) optimistic-lock(乐观锁定) (可选,默认是version): 决定乐观锁定的策略。
(16) lazy (可选): 通过设置lazy="false", 所有的延迟加载(Lazy fetching)功能将被全部禁用(disabled)。
(21) abstract (可选): 用于在<union-subclass>的继承结构 (hierarchies)中标识抽象超类。
<id/>标签 -主键
主键生成策略:
uuid native 和assigned
<id
*name="propertyName" (1)
type="typename" (2)
*column="column_name" (3)
unsaved-value="null|any|none|undefined|id_value" (4)
access="field|property|ClassName" (5)
node="element-name|@attribute-name|element/@attribute|.">
*length (6)
<generator class="generatorClass"/>
</id>
(1) name (可选): 标识属性的名字。
(2) type (可选): 标识Hibernate类型的名字。
(3) column (可选 - 默认为属性名): 主键字段的名字。
(4) unsaved-value (可选 - 默认为一个切合实际(sensible)的值): 一个特定的标识属性值,用来标志该实例是刚刚创建的,尚未保存。 这可以把这种实例和从以前的session中装载过(可能又做过修改--译者注) 但未再次持久化的实例区分开来。
(5) access (可选 - 默认为property): Hibernate用来访问属性值的策略。
(6) 长度.
<id name="id" type="long" column="cat_id">
<generator class="uuid">
</generator>
</id>
identity
对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。
sequence
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。
uuid
用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串。
native
根据底层数据库的能力选择identity, sequence 或者hilo中的一个。
assigned
让应用程序在save()之前为对象分配一个标示符。这是 <generator>元素没有指定时的默认生成策略。
foreign
使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。
<property
*name="propertyName" (1)
*column="column_name" (2)
type="typename" (3)
update="true|false" (4)
insert="true|false" (4)
formula="arbitrary SQL expression" (5)
access="field|property|ClassName" (6)
lazy="true|false" (7)
unique="true|false" (8)
not-null="true|false" (9)
optimistic-lock="true|false" (10)
generated="never|insert|always" (11)
node="element-name|@attribute-name|element/@attribute|."
index="index_name"
unique_key="unique_key_id"
length="L"
precision="P"
scale="S"
/>
(1) name: 属性的名字,以小写字母开头。
(2) column (可选 - 默认为属性名字): 对应的数据库字段名。 也可以通过嵌套的<column>元素指定。
(4) update, insert (可选 - 默认为 true) : 表明用于UPDATE 和/或 INSERT 的SQL语句中是否包含这个被映射了的字段。这二者如果都设置为false 则表明这是一个“外源性(derived)”的属性,它的值来源于映射到同一个(或多个) 字段的某些其他属性,或者通过一个trigger(触发器)或其他程序生成。
(7) lazy (可选 - 默认为 false): 指定 指定实例变量第一次被访问时,这个属性是否延迟抓取(fetched lazily)( 需要运行时字节码增强)。
(8) unique (可选): 使用DDL为该字段添加唯一的约束。 同样,允许它作为property-ref引用的目标。
(9) not-null (可选): 使用DDL为该字段添加可否为空(nullability)的约束。
映射文件中一般类型中可以省略,其他不略
发表评论
-
hibernate基础-初步
2009-11-03 15:26 625类拟框架:Apache OJB,JDO,Toplink,EJB ... -
hibernate基础-映射关系(多对一I一对一)
2009-11-03 15:53 496多对一关联映射 many-to-one关联映射本质: * ... -
hibernate基础-映射关系(一对多I多对多).
2009-11-03 16:04 599一对多关联映射(one-to-many) 一对多关联映射利用了 ... -
hiberante基础-继承映射
2009-11-03 16:15 753继承映射的三种策略: * 单表继承,每棵类继承树使用一个表 ... -
hibernate基础-其他映射
2009-11-03 16:17 665set、list、array、map Collection: ... -
hibernate基础-自关联映射
2009-11-03 16:19 7521 class Node: private int id;pr ... -
hibernate基础-Component+[联合]映象
2009-11-03 16:22 507Component映射(值对象映射) 在hibernate中, ... -
hibernate基础-lazy策略
2009-11-03 16:33 790lazy策略可以使用在: * <class> ... -
hibernate基础-fetch抓取
2009-11-03 16:34 589抓取策略(单端代理的批量抓取) 1 保持默认,也就是fetch ... -
hibernate基础-Session_Flush
2009-11-03 16:37 695session flush测试: session ... -
hibernate基础-悲观[乐观]锁
2009-11-03 16:40 493悲观锁 悲观锁的实现,通常依赖于数据库机制,在整个过程中将数据 ... -
hiberante基出-缓存
2009-11-03 16:49 501一级缓存 * 一级缓存是缓存实体对象的 * 如果管理一 ... -
hibernate基础-HQL
2009-11-03 17:14 536在hql中关键字不区分大小写,但是属性和类名区分大不写简单属性 ... -
hibernate基础-HibernateTemplate
2009-11-03 17:20 5741 ,void delete ( Object entity ... -
[导入]Hibernate 深入研究之 Criteria
2009-11-03 17:35 565文章来源:http://www.cnblogs.com/ ... -
DetachedCriteria
2009-11-03 17:41 658org.hibernate.criterion.Detache ... -
Restrictions
2009-11-03 17:46 727HQL运算符 ... -
hibernate.cfg.xml
2009-11-03 17:56 611<?xml version="1.0&quo ... -
由映射文件生成表
2009-11-03 17:57 555import org.hibernate.cfg.Confi ... -
JNDI连接池
2009-11-29 21:19 724管理连接对象 Modle:biz,dao,entity 数据源 ...
相关推荐
hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-4.1.12.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar ...
总的来说,理解和熟练运用`hibernate-configuration-3.0.dtd`和`hibernate-mapping-3.0.dtd`对于开发者来说至关重要,因为它们构成了Hibernate配置和对象映射的基础。通过这些文件,我们可以精确地配置Hibernate以...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
"content.jar"和"artifacts.jar"则是包含插件的类库和资源,是插件运行的基础;"site.properties"和"site.xml"是Eclipse插件站点的配置文件,用于定义插件的元数据,如版本、依赖关系等;"features"目录下的文件描述...
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
2. **JAR文件**:包括Hibernate的主库和其他依赖库,如hibernate-core.jar、hibernate-entitymanager.jar等。 3. **文档**:如用户指南、API文档,帮助开发者快速上手和解决问题。 4. **示例**:包含了一些演示如何...
在本文中,我们将深入探讨`hibernate-commons-annotations-5.0.1.Final.jar`的源码,了解其内部结构和主要功能。 一、元数据注解 HCA的核心在于提供了一系列的注解,如`@Entity`、`@Table`、`@Column`、`@Id`等,...
在Hibernate中,级联操作可以通过`cascade`属性进行配置。主要有以下几种级联类型: 1. `save-update`:当保存或更新父实体时,会自动保存或更新所有关联的子实体。 2. `merge`:在调用`session.merge()`时,不仅...
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
使用hibernate-validator 进行校验的jar包,里面包括了基础hibernate-validator-5.0.0.CR2.jar hibernate-validator-annotation-processor-5.0.0.CR2.jar 之外,还包括了el-api-2.2.jar javax.el-2.2.4等项目必不可...
Hibernate 3.5.0-Final 是该系列的一个重要版本,它在原有的基础上增加了许多新特性和改进,使得开发者能够更加高效地进行数据持久化操作。 #### 下载链接 - **官方下载地址**:...
《HibernateTools 3.2.4 Beta1:高效数据库管理和对象关系映射工具》 HibernateTools是Java开发者的重要辅助工具,它为Hibernate框架提供了一系列实用的集成开发环境(IDE)插件和命令行工具,极大地简化了数据操作...
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-core-5.4.24.Final.jar
1. **hibernate-core**: 这是Hibernate的核心模块,提供了基本的ORM功能,如实体管理、会话管理、查询服务等。它包含了对JPA(Java Persistence API)的实现,以及Hibernate特有的特性,如 Criteria 查询、HQL...
Hibernate稳定版(hibernate-release-5.3.23.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。
本文将重点探讨`hibernate-core-5.0.11.Final.jar`的核心源码,帮助读者深入理解其内部机制,并提供实用的应用指导。 一、Hibernate Core概述 Hibernate Core是Hibernate框架的基础部分,它包含了ORM的核心功能,...
在hibernate-release-5.2.10.Final中,OSGi(Open Service Gateway Initiative)模块的引入,使得Hibernate可以更好地适应模块化的开发环境。OSGi是一种动态模块系统,它允许应用程序在运行时进行组件的加载、卸载和...
Hibernate---继承 Hibernate---继承