Hibernate的映射文件中基于主键的双向1对1的关联
1、Hibernate中采用基于主键的映射策略是,有一端(任意一端)的主键生成策略要是foreign,根据对方的主键来生成自己的主键,它的实体不能拥有自己的主键生成策略,如我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="po">
<class name="Bike" table="tb_bike">
<!-- 使用只读缓存 catalog="danche" -->
<cache usage="read-write"/>
<!-- 映射标识属性 -->
<id name="bikeId" type="integer" column="b_bikeId">
<!-- 指定使用identity主键生成策略 -->
<generator class="native"/>
</id>
<!-- 映射普通属性 -->
<property name="bikeType" column="b_bikeType"
type="java.lang.String" length="45"/>
<property name="bikePrice" column="b_bikePrice"
type="java.lang.Double"/>
<property name="rentPrice" column="b_rentPrice"
type="java.lang.Double"/>
<property name="state" column="b_state"
type="java.lang.String"/>
<property name="picture" column="b_picture"
type="java.lang.String"/>
<property name="repair" column="b_repair"
type="java.lang.Integer"/>
<one-to-one name="order"></one-to-one>
</class>
</hibernate-mapping>
另一端是:
<hibernate-mapping package="po">
<class name="Order" table="tb_order">
<!-- 使用只读缓存 catalog="danche" -->
<cache usage="read-write"/> <id name="orderId" type="integer" column="b_orderId">
<generator class="foreign">
<param name="property">bike</param>
</generator>
</id>
<!-- 映射普通属性 -->
<property name="userId" column="b_userId"
type="java.lang.Integer"/>
<property name="bikeId" column="b_bikeId"
type="java.lang.Integer"/>
<property name="orderTime" column="b_orderTime"
type="java.util.Date"/>
<!-- 主键双向关联-->
<one-to-one name="bike"></one-to-one>
</class>
</hibernate-mapping>
2、对应的,我们要在主键是foreign的持久化类中为其构造一个有参构造函数(用来在初始化是传递参数):
public Order(){
}
4 public Order(Integer userId,Integer bikeId,Date orderTime){
this.bikeId =bikeId;
this.userId = userId;
this.orderTime = orderTime;
}
3、之后的应用和普通的一个持久化类对应一个映射文件一样了。
Hibernate的映射文件中基于主键的双向1对1的关联的更多相关文章
- hibernate中基于主键映射1-1关联关系和基于外键映射1-1关联关系的不同
基于主键映射1-1关联关系和基于外键映射1-1关联关系的不同,主要区别是在配置映射文件上会有区别 两个持久化类为Manager和Department 1:基于主键映射1-1关联关系 1)使用其他持久化 ...
- java之hibernate之基于主键的双向一对一关联映射
这篇 基于主键的双向一对一关联映射 1.依然考察人和身份证的一对一关系,如果采用主键关联,那么其表结构为: 2.类结构 Person.java public class Person implemen ...
- Hibernate(12)_基于主键的双向1对1
一.基于主键的双向1对1 1.介绍: 基于主键的映射策略:指一端的主键生成器使用 foreign 策略,表明根据"对方"的主键来生成自己的主键,自己并不能独立生成主键. <p ...
- Hibernate(九):基于主键映射的1-1关联关系
背景: 在实际开发中我们会遇到新建一个用户表,但这个表字段过长,而且有写字段常用(主要),有些字段比较不常用(次要).此时,我们会考虑到把用户信息拆分到两张表中:member(存储用户主要信息),me ...
- Hibernate第三篇【主配置文件、映射文件、复合主键映射】
前言 目前已经学了如何搭建Hibernate的开发环境,以及Hibernate对应的API了-在快速入门还没讲解的就是配置文件是怎么配置的.因此,本博文主要讲解主配置文件以及映射配置文件.. 主配置文 ...
- Hibernate关联关系映射之一对一(主键关联)
在业务成的域模型中,类和类之间最普遍的关系就是关联关系,而关联也是有方向的. 就以例子来说明:一个人对应一张身份证.对其进行增删改. 对于人在数据创建表的时候,我们就给他两个字段,一个是id号,一个就 ...
- Hibernate之映射文件中索引及约束的使用
1.添加索引: 在一对多的关系中,在多的一方会产生一个外键,这个外键没有自动 添加索引,当存在从一的一端产生对多的一端的查询时,有可能会在多的一端造成全表查询问题,数据量巨大时会产生严重的性能问题.可 ...
- hibernate笔记--基于主键的单(双)向的一对一映射关系
上一节介绍的基于外键的一对一映射关系中,在Person表中有一个外键列idCard_id,对应的idCard表的主键id,至于基于主键的一对一映射关系,就是指Person表中抛弃了idcard_id这 ...
- [原创]java WEB学习笔记85:Hibernate学习之路-- -映射 一对一关系 ,基于主键方式实现
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- spring MVC cors跨域实现源码解析
# spring MVC cors跨域实现源码解析 > 名词解释:跨域资源共享(Cross-Origin Resource Sharing) 简单说就是只要协议.IP.http方法任意一个不同就 ...
- bcnf范式
3.5范式--bcnf范式到底是什么呢? 对于bcnf范式,通过查阅资料,我的理解是--主键依赖的去除.比如说:一个仓库管理的表格,有以下属性(管理员编号,仓库号,货物编号,货物数量)其中每个管理员管 ...
- matlab和C语言的break及continue测试
break和continue语句 有两个附加语句可以控制while和for循环:break和continue语句.break语句可以中止循环的执行和跳到end后面的第一句执行,而continue只中止 ...
- Ioc容器BeanPostProcessor-Spring 源码系列(3)
Ioc容器BeanPostProcessor-Spring 源码系列(3) 目录: Ioc容器beanDefinition-Spring 源码(1) Ioc容器依赖注入-Spring 源码(2) Io ...
- [学习心得][Introduction to ASP.NET Core 1.0]3-2 ASP.NET Core and MVC Pattern
We need SMART Models, THIN Controllers, and DUMB Views. VeryBeginning 要使用MVC,要先将MVC服务加到程序中去 Nuget包里添 ...
- Dijkstra算法——单源最短路径问题
学习一个点到其余各个顶点的最短路径--单源最短路径 Dijkstra算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向 ...
- 0CSS样式表与HTML结合的方法
从此王子和公主幸福的生活在了一起:) 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文 ...
- 用ASP.NET创建网站
ASP.NET提供三种框架来创建web应用:WebForms,ASP.NET MVC和ASP.NET WebPages.这三种框架都是稳定成熟的,你可以用任何一种方式开发一个很棒的web应用.不管你选 ...
- Express4.x动态的销毁或者替换中间件(app.unuse)
需求描述 expres4.x托管静态资源时以中间件的方式将server-static挂载到app上,正常的使用没有问题,但是有时候我们需要动态的托管一些静态资源,也就是静态资源的目录不确定的时候该怎么 ...
- UI培训怎么学才高效
随着互联网科技的爆炸式发展,UI设计越来越受到我们的青睐,绝大部分企业已成立U设计部门来提高自身影响力,但现在许多从事UI设计的人,都是从零基础过度过来的,他们不乏大牛,在阿里巴巴,在腾讯等国内一流企 ...