对象关系映射

数据对象的映射关系

落爺英雄遲暮 提交于 2020-03-23 23:07:24
上图是一个以用户信息为中心的实体关系图,关系说明如下: 一个用户可拥有一个可选的用户扩展信息(1 - 0) 一个用户扩展信息拥有一个必需的所属用户信息(0 - 1) 一个用户扩展信息拥有一个用户地址信息(复合类型) 一个用户可对应多个登录日志信息(1 - N) 一个登录日志拥有一个必需的所属用户信息(N- 1) 一个用户可以拥有多个角色(N - N) 一个角色可以分配给多个用户(N - N) 下面来依依看一下这几种数据表的关系 第一种:0:1。举例说明:有一个数据表Emplyee代表该公司的员工表,而该公司里的员工有一个通讯账号数据库表MessagingAccount,而有些员工不使用,也就是没有通讯账号。这就说明员工Employee和MessagingAccount之间的关系就是一个员工对应一个通讯账号,或者一个员工没有通讯账号。 WithOptional:将关系配置为required:optional。(required:0…1端的1,表示必需,不可为null;optional:0…1端的0,表示可选,可为null。下同) 第二种:1:1.举例说明:还是第一种的例子中每个员工都有一个通讯账号的话。 WithRequiredDependent:将关系配置为required:required。要配置的实体类型将成为依赖对象,且包含主体的外键。作为关系目标的实体类型将成为关系中的主体

EF Code First:实体映射

百般思念 提交于 2020-03-23 23:06:45
二、实体映射 实体与数据库的映射可以通过DataAnnotation与FluentAPI两种方式来进行映射: (一) DataAnnotation DataAnnotation 特性由.NET 3.5中引进,给.NET中的类提供了一种添加验证的方式。DataAnnotation由命名空间System.ComponentModel.DataAnnotations提供。下面列举实体模型中常用的DataAnnotation特性: KeyAttribute:对应数据库中的主键 RequiredAttribute:对应数据库中字段的数据是否可以为null MaxLengthAttribute:对应数据库中字符串类型字段的最大长度 MinLengthAttribute:在数据库中无对应,但在代码中字符串最小长度 ConcurrencyCheckAttribute:指定用于开放式并发检查的列的数据类型 TimestampAttribute:将列的数据类型指定为行版本 System.ComponentModel.DataAnnotations命名空间中只定义了部分实体验证的特性,在EntityFramework程序集中定义了更多的数据映射特性: DatabaseGeneratedAttribute:标记指定实体属性是由数据库生成的,并指定生成策略(None数据库不生成值,Identity当插入行时

NHibernate集合映射中的set, list, map, bag, array

余生长醉 提交于 2020-03-23 16:34:14
set, bag, list, map的语义 集合最重要的一点是集合的语义。Java JPA中对Set, List, Collection, Map四种集合进行了定义(Java的Collection允许bag语义),NHibernate从Hibernate移植时照搬了这些概念。但是.Net社区中这些概念比较弱,很多人对set, bag, map的说法很陌生,这也对NHibernate集合映射的使用造成一定障碍。 set 集合中的对象是唯一的,无序的,不能通过索引、key值访问,只能使用enumerator列举集合对象。 .Net没有原生的set类,所以NHibernate使用Iesi.Collections的set。 不同的set实现可能存在一些差异,因此导致set表现出来的特性不大一样,但在设计、使用上的主要原则是将set看作唯一、无序的。 Iesi.Collections中,基于System.Collections.SortedList实现的ListSet在列举集合对象时顺序跟添加到set的顺序一致,但基于System.Collections.HashTable实现的HashSet就不一致了。HashSet根据对象的GetHashCode()返回值判断对象是否相等,而ListSet则使用对象的Equals()方法进行判断,所以如果没有注意重载GetHashCode(

映射一对多双向关联关系 cascade、inverse、属性

允我心安 提交于 2020-03-23 13:02:26
当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象。或者通过集合导航到一组对象。例如: 对于给定的Emp对象,如果想获得与它关联的Dept对象,只要调用如下方法 Dept dept=emp.getDept(); //从Emp对象导航到关联的Dept对象 以Dept(部门)类和Emp(员工)类为例: 一、配置双向一对多关联 需在Dept类中增加一个集合类型的emps属性 private Set<Emp> emps=new HashSet<Emp>(); public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; 如何在映射文件中映射集合类型的emps属性。由于在Dept表中没有直接与emps属性对应的字段。因此不能用<property>元素来映射emps属性,而要使用<set>元素: <set name="emps"> <key column="deptNo"></key> <!-- 多的一方 emp外键 --> <one-to-many class="Emp" /> </set> 解析: <set>元素的name属性:设定持久化类的属性名。此处为Dept类的emps属性。 <set>元素还包含两个子元素: ①<key>元素

Hibernate映射一对多双向关联关系及部门关联属性

元气小坏坏 提交于 2020-03-23 13:02:15
一对多双向关联关系:(Dept/Emp的案例)        既可以根据在查找部门时根据部门去找该部门下的所有员工,又能在检索员工时获取某个员工所属的部门。 步骤如下:   1.构建实体类(部门实体类加set员工集合)   2. 准备持久化类的映射文件 ( 部门配置中,植入一对多配置 )   3.构建大配置,关联小配置   4.构建测试类 1.构建实体类(部门类)   使用Set集合可以使保存的内容不重复。 员工类: 2. 准备持久化类的映射文件  Dept小配置: <set> 元素的 name 属性: 设定持久化类的属性名。此处为 Dept 类的 emps 属性。 <set> 元素还包含两个子元素: 《1》.<key> 元素: column 属性设定与所关联的持久化类对应的表的外键。 《2》.<one-to-many> 元素: class 属性设定与所关联的持久化类。 Emp小配置: 3.构建大配置,关联小配置(关键代码) 4.构建测试类: cascade 属性 none:当Session操纵当前对象时,忽略其他关联的对象。它是cascade属性的默认值. Save-update:当通过Session的save()、update()及saveOrUpdate()方法来保存或更新当前对象时,级联保存所有关联的新建的瞬时状态的对象,并且级联更新所有关联的游离状态的对象。 Delete

06章 映射一对多双向关联关系、以及cascade、inverse属性

倾然丶 夕夏残阳落幕 提交于 2020-03-23 13:02:02
当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象。或者通过集合导航到一组对象。例如: 对于给定的Emp对象,如果想获得与它关联的Dept对象,只要调用如下方法 Dept dept=emp.getDept(); //从Emp对象导航到关联的Dept对象 以Dept(部门)类和Emp(员工)类为例: 一、配置双向一对多关联 需在Dept类中增加一个集合类型的emps属性 private Set<Emp> emps=new HashSet<Emp>(); public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; 如何在映射文件中映射集合类型的emps属性。由于在Dept表中没有直接与emps属性对应的字段。因此不能用<property>元素来映射emps属性,而要使用<set>元素: <set name="emps"> <key column="deptNo"></key> <!-- 多的一方 emp外键 --> <one-to-many class="Emp" /> </set> 解析: <set>元素的name属性:设定持久化类的属性名。此处为Dept类的emps属性。 <set>元素还包含两个子元素: ①<key>元素

SSH网上商城二

空扰寡人 提交于 2020-03-23 13:01:48
1、实现的功能如下 当用户登陆成功之后,在首页显示所有的一级分类 显示热门商品 显示最新商品 当用户点击某个一级分类的菜单选项的时候,显示当前一级分类菜单项下所有的二级分类,并且按照分页的形式显示该二级分类下的所有商品 第20课:首先显示一级分类 第21课:热门商品的显示 效果如下所示: 第23课:热门最新的商品 第24课:首先点击商品显示商品的详情 在首页的index.jsp中 <s:iterator var="p" value="nList"> <li> <a href="${ pageContext.request.contextPath }/product_findByPid.action?pid=<s:property value="#p.pid"/>" target="_blank"><img src="${pageContext.request.contextPath}/<s:property value="#p.image"/>" data-original="http://storage.shopxx.net/demo-image/3.0/201301/4a51167a-89d5-4710-aca2-7c76edc355b8-thumbnail.jpg" style="display: block;"></a> </li> </li> </s:iterator>

hibernate关系映射

感情迁移 提交于 2020-03-23 13:00:01
关系映射 对象中的关系映射有如下四种,而且分为单向和双向两种,单向和双向的区别主要在java类中才会有区别,在数据库中时没区别的。 一对一 一对多 多对一 多对多 其中一对多双向关联和多对一双向关联是一样的。所以总的来说,我们要注意的关系映射有七种。 OneToOne(凡是双向,都要用mappedBy) 单向外键 使用annotation进行配置。如果使用annotation进行配置,那么和之前一样,首先要进行表的配置,即@Entity,还有id,自增等等,这里不做重复介绍。   在使用annotation进行单向配置的时候,比如存在这么两张表(husband、wife),那么就会存在husband和wife两个类文件,在husband中设置一个wife对象,然后再生成的getter方法前面用@onetoone进行注解,这样就表示进行了单向的关联。要注意,这里生成的外键的名字,也就是在表husband生成的字段的名字为wife属性名_id,如设置的wife属性为wife,那么自动生成的字段为wife_id。这样的操作明显不是我们想要的,如果想要设置成自己想要的字段名,可以在@onetoone下面再用一个新的注解:@joinColumn(name=”wifeId”),这样就表示把应的字段名设置为wifeId。 xml文件进行配置。使用xml文件进行配置的时候

hibernate(3) —— 关系映射

独自空忆成欢 提交于 2020-03-23 12:59:10
hibernate 中关系映射指的是实体类与实体类间的关系。和 数据库 中表与表之间的关系类似,有一对一,多对一,一对多,多对多四种映射关系。 一:一对一映射 两个对象之间是一对一的关系,如人和身份证之间是一对一的关系。 实现一对一映射有两种方式,一种是主键约束,一种是外键约束 1,主键约束 数据库表不会有额外的字段维护他们之间的关系,仅通过表的主键来关联 1)对象模型 2)关系模型 2,外键约束 在一种一个对象中加入另一个对象的属性 1)对象模型 2)关系模型 3)xml中配置 由于IDCard 身份证实体类是被引入,它的配置文件不发生变化,Person类的配置文件中需要做相应配置,又由于在人的一段能看到卡的信息,配置信息时,需要注意在引入的一方使用many-to-one标签 主要:many-to-one标签中的name属性是IDCard对象主键字段前面加上get字段。 二:多对一 多对一映射,如学生和班级之间的关系,多个学生对应一个班级。 1, 对象模型中是在多的一方对象中加入一的一方对象的引用。配置文件参见上图所示。 2,注解使用 @Entity public class Person { private int id; private String name; private IDCard cid; @ManyToOne @JoinColumn(name="cardid")

关系映射大纲

瘦欲@ 提交于 2020-03-23 12:58:40
关系映射 对象之间的关系 1.这里的关系映射指的是对象之间的关系,并不是指数据库的关系,本章解决的问题是当前对象之间处于下列关系之一时,数据库表该如何映射,编程上该如何对待( 红色为重点 ) 2.简化问题:   a) 怎么写 Annotation   b) 增删改查 CRUD 怎么写 3.一对一   a) 单向(主键、外键)   b) 双向(主键、外键)    c) 中间表(很少用) 4. 一对多    a) 单向    b) 双向 5. 多对一    a) 单向    b) 双向(一对多双向是一回事儿) 6. 多对多    a) 单向    b) 双向 7.集合映射   a) List   b) Set   c) Map 8.继承关系(不重要)   a) 单表   b) 多表   c) 一张主表,多张子表 9.组件映射   a) @Embeddable   b) @Embedded   a) 单向   b) 双向 来源: https://www.cnblogs.com/ShawnYang/p/6728942.html