- 浏览: 197733 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
wangxin0ldrs:
Exception in thread "main& ...
Javamail发送邮件的简单实例 -
Drakedog:
现在知道是jar包里的,但是好像不是org.apache.cr ...
AJAX大量数据xml格式提交 -
Drakedog:
XmlDocument 这个是要自己写 吗?
AJAX大量数据xml格式提交 -
fashion_518:
楼主是高手吗?
SSH2的包 -
cloverprince:
阿,动态语言的优雅。正在为java+DOM的罗嗦发愁的路过。
解析XML
composite-id
<composite-id
name="propertyName"
class="ClassName"
mapped="true|false"
access="field|property|ClassName">
node="element-name|."
<key-property name="propertyName" type="typename" column="column_name"/>
<key-many-to-one name="propertyName class="ClassName" column="column_name"/>
......
</composite-id>
For a table with a composite key, you may map multiple properties of the class as identifier properties. The <composite-id> element accepts <key-property> property mappings and <key-many-to-one> mappings as child elements.
<composite-id>
<key-property name="medicareNumber"/>
<key-property name="dependent"/>
</composite-id>
Your persistent class must override equals() and hashCode() to implement composite identifier equality. It must also implements Serializable.
例如:( 孙卫琴 <精通Hibernate:Java对象持久化技术详解> 137页
一、定义复合属性
Customer表没有定义ID代理主键,而是以NAME字段和COMPANY_ID作为复合主键,那么相应地,在Customer类中也不必定义id属性,而是以name和company_id作为OID,映射代码如下:
<composite-id>
<key-property name="name" column="NAME" type-"string"/>
<key-property name="companyId" column-"COMPANY_ID" type="long"/>
</composite-id>
<version name-"version" column-"VERSIONI" unsaved-value="0"/>
创建:
Customer customer=new Customer();
customer.setName("Tom");
customer.setCompanyId(11);
session.saveOrUpdate(customer);//由于customer对象的version属性为0,因此调用save()方法
加载:
Customer customer-=ew Customer();
customer.setName("TOm");
customer.setCompanyId(11);
session.load(Customer.class,customer);
注:需要实现java.io.Serializable接口
二、定义主键类
映射复合主键的另一种方法是先定义主键类,以包含name,companyId字段,实现Serializable接口,添加映射代码如下:
<class name="mypack.Customer" table="CUSTOMERS">
<composite-id name="custoerId" class="mypack.CustomerId">
<key-property name="name" column="NAME" type=String/>
<key-property name-"companyId" column="COMPANY_ID" type="long"/>
</composite-id>
<version name="version" column="VERSION" unsaved-value="0"/>
</class>
创建:
CustomerId customerId=new CustomerId("Tom",11);
Customer customer=new Customer();
customer.setCustomerId(customerId);
session.saveOrUpdate(customer);
加载:
CustomerId customerId=new CustomerId("Tom",11);
Customer customer=(Customer)session.load(Customer.class,customerId);
三、外键参照
当COMPANY_ID还作为外键参照COMPANY表,则在Customer类中:
private CustomerId customerId;
private Company company;
映射代码:
<class name="mypack.Customer" table="CUSTOMERS">
<composite-id name=customerId" class ="mypack.CustomerId">
<key-property name="name" column="NAME" type="string"/>
<key-property name="companyId" column="COMPANY_ID" type="long"/>
</composite-id>
<version name="version" column="VERSION" unsaved-value="0"/>
<many-to-one name="company" class="mypack.Company" column="COMPANY_ID"
insert="false" update="fase"/>
<!--保存或更新Customer对象时,会忽略company属性-->
</class>
也可用<key-many-to-one>映射
<class name="mypack.Customer" table="CUSTOMERS">
<composite-id name=customerId" class ="mypack.CustomerId">
<key-property name="name" column="NAME" type="string"/>
<key-many-to-one name="company"
class="mypack.Company"
column="COMPANY_ID"/>
<version name="version" column="VERSION" unsaved-value="0"/>
</class>
四、Column属性
<column
name="column_name"
length="N"
precision="N"
scale="N"
not-null="true|false"
unique="true|false"
unique-key="multicolumn_unique_key_name"
index="index_name"
sql-type="sql_type_name"
check="SQL expression"
default="SQL expression"/>
<formula>SQL expression</formula>
column and formula attributes may even be combined within the same property or association mapping to express, for example, exotic join conditions.
<many-to-one name="homeAddress" class="Address"
insert="false" update="false">
<column name="person_id" not-null="true" length="10"/>
<formula>'MAILING'</formula>
</many-to-one>
<composite-id
name="propertyName"
class="ClassName"
mapped="true|false"
access="field|property|ClassName">
node="element-name|."
<key-property name="propertyName" type="typename" column="column_name"/>
<key-many-to-one name="propertyName class="ClassName" column="column_name"/>
......
</composite-id>
For a table with a composite key, you may map multiple properties of the class as identifier properties. The <composite-id> element accepts <key-property> property mappings and <key-many-to-one> mappings as child elements.
<composite-id>
<key-property name="medicareNumber"/>
<key-property name="dependent"/>
</composite-id>
Your persistent class must override equals() and hashCode() to implement composite identifier equality. It must also implements Serializable.
例如:( 孙卫琴 <精通Hibernate:Java对象持久化技术详解> 137页
一、定义复合属性
Customer表没有定义ID代理主键,而是以NAME字段和COMPANY_ID作为复合主键,那么相应地,在Customer类中也不必定义id属性,而是以name和company_id作为OID,映射代码如下:
<composite-id>
<key-property name="name" column="NAME" type-"string"/>
<key-property name="companyId" column-"COMPANY_ID" type="long"/>
</composite-id>
<version name-"version" column-"VERSIONI" unsaved-value="0"/>
创建:
Customer customer=new Customer();
customer.setName("Tom");
customer.setCompanyId(11);
session.saveOrUpdate(customer);//由于customer对象的version属性为0,因此调用save()方法
加载:
Customer customer-=ew Customer();
customer.setName("TOm");
customer.setCompanyId(11);
session.load(Customer.class,customer);
注:需要实现java.io.Serializable接口
二、定义主键类
映射复合主键的另一种方法是先定义主键类,以包含name,companyId字段,实现Serializable接口,添加映射代码如下:
<class name="mypack.Customer" table="CUSTOMERS">
<composite-id name="custoerId" class="mypack.CustomerId">
<key-property name="name" column="NAME" type=String/>
<key-property name-"companyId" column="COMPANY_ID" type="long"/>
</composite-id>
<version name="version" column="VERSION" unsaved-value="0"/>
</class>
创建:
CustomerId customerId=new CustomerId("Tom",11);
Customer customer=new Customer();
customer.setCustomerId(customerId);
session.saveOrUpdate(customer);
加载:
CustomerId customerId=new CustomerId("Tom",11);
Customer customer=(Customer)session.load(Customer.class,customerId);
三、外键参照
当COMPANY_ID还作为外键参照COMPANY表,则在Customer类中:
private CustomerId customerId;
private Company company;
映射代码:
<class name="mypack.Customer" table="CUSTOMERS">
<composite-id name=customerId" class ="mypack.CustomerId">
<key-property name="name" column="NAME" type="string"/>
<key-property name="companyId" column="COMPANY_ID" type="long"/>
</composite-id>
<version name="version" column="VERSION" unsaved-value="0"/>
<many-to-one name="company" class="mypack.Company" column="COMPANY_ID"
insert="false" update="fase"/>
<!--保存或更新Customer对象时,会忽略company属性-->
</class>
也可用<key-many-to-one>映射
<class name="mypack.Customer" table="CUSTOMERS">
<composite-id name=customerId" class ="mypack.CustomerId">
<key-property name="name" column="NAME" type="string"/>
<key-many-to-one name="company"
class="mypack.Company"
column="COMPANY_ID"/>
<version name="version" column="VERSION" unsaved-value="0"/>
</class>
四、Column属性
<column
name="column_name"
length="N"
precision="N"
scale="N"
not-null="true|false"
unique="true|false"
unique-key="multicolumn_unique_key_name"
index="index_name"
sql-type="sql_type_name"
check="SQL expression"
default="SQL expression"/>
<formula>SQL expression</formula>
column and formula attributes may even be combined within the same property or association mapping to express, for example, exotic join conditions.
<many-to-one name="homeAddress" class="Address"
insert="false" update="false">
<column name="person_id" not-null="true" length="10"/>
<formula>'MAILING'</formula>
</many-to-one>
发表评论
-
hibernate 如何实现延迟加载
2011-03-25 15:26 829延迟加载: ... -
基本O/R映射(一)--Hibernate快速参考
2011-03-24 13:12 1033hibernate-3.2/doc/reference/en/ ... -
Spring实例化Bean的三种方式
2010-11-19 15:53 838本文向您介绍Spring实例化Bean的三种方式,包括xml配 ... -
lazy-init属性和预实例化
2010-11-19 14:20 1028最近在负责一个大项目 ... -
可以取得页面参数的 ServletRequestAware接口
2010-11-09 14:05 965为了在Action处理过程中可以访问到当前请求HttpServ ... -
DAO中的异常处理
2010-06-29 18:57 1108只有在可以合理地预期调用者可以处理异常时,DAO 接口中的方法 ... -
在spring中使用log4j
2010-06-28 14:59 802Log4j是Apache的一个开放源代码项目,通过使用Log4 ... -
struts2中extends='struts-default' 理解
2010-06-25 10:11 3155struts2的struts.xml中package是否必须要 ... -
struts配置的 <package name="tutorial" extends="struts-default">
2010-06-25 10:00 2049<package name="tutorial ... -
Struts2如何使用Spring插件完成整合
2010-06-24 17:51 1471Struts2与Spring的整合,对于程序员很有利,他能使程 ... -
几种获得spring里注册Bean的方法 转载
2010-06-23 14:52 916/** * 获取类型为requiredType的对 ... -
ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext的区别
2010-06-23 10:26 1429classpath: 前缀是不需要的, 默认就是指项目的cla ... -
spring+hibernate架构中Dao访问数据库的几种方法
2010-06-07 13:06 873在spring+hibernate的架构中,访问数据库有几种方 ... -
编程式的事务管理
2010-06-07 12:34 897编程式事务提供了 TransactionTemplate 模板 ... -
好文章
2010-06-07 11:29 685http://wangjie0503.blog.sohu.co ... -
【Spring.事务.异常回滚】请问Spring的声明式事务发生异常时的处理方式。
2010-06-04 15:52 1653http://www.iteye.com/problems/1 ... -
Dao层(hibernate实现)的异常是在Dao层类内处理还是抛到上一层(Service业务层)
2010-06-04 13:58 3406Dao层(hibernate实现)的异 ... -
SSH2的包
2010-06-01 16:41 1245你可能把不要的包也导进去了或是哪个必需的包没导入,以下是必需包 ... -
Struts2 获取request对象的方法
2010-05-31 16:27 1252方法一: 在Action中的代码:Map request ... -
申明式事务和OpenSessionInView
2010-05-25 16:05 796Write operations are not allowe ...
相关推荐
4.3 Hibernate O/R映射 4.4 数据关联 4.5 Hibernate数据检索 4.6 HQL实用技术 4.7 自定义持久化实现 第5章 Hibernate高级特性 5.1 Hibernate持久化实现 5.2 Hibernate回调与拦截机制 5.3 Hibernate实用技术 ...
4.3 Hibernate O/R映射 4.4 数据关联 4.5 Hibernate数据检索 4.6 HQL实用技术 4.7 自定义持久化实现 第5章 Hibernate高级特性 5.1 Hibernate持久化实现 5.2 Hibernate回调与拦截机制 5.3 Hibernate实用技术 ...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
5. 对象/关系数据库映射基础(Basic O/R Mapping); 6. 集合类(Collections)映射; 7. 关联关系映射; 8. 组件(Component)映射; 9. 继承映射(Inheritance Mappings); 10. 与对象共事; 11. 事务和并发; 12. 拦截器与...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
5. 对象/关系数据库映射基础(Basic O/R Mapping) 5.1. 映射定义(Mapping declaration) 5.1.1. Doctype 5.1.2. hibernate-mapping 5.1.3. class 5.1.4. id 5.1.4.1. Generator 5.1.4.2. 高/低位算法(Hi/Lo ...
5、O/R Mapping基础 6、集合类映射 7、组件映射 8、继承映射 9、操作持久化数据 10、事务和并行 11、Hibernate查询语言 12、条件查询 13、原生SQL查询 14、性能提升 15、工具箱指南 16、示例:父子关系 17、示例:...
第 5 章 对象/关系数据库映射基础(Basic O/R Mapping) 第 6 章 Types 第 7 章 集合映射(Collection mappings) 第 8 章 关联关系映射 第 9 章 组件(Component)映射 第 10 章 继承映射...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了 Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用...
Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个...
Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个...