首页
学习
活动
专区
圈层
工具
发布

EF 约定介绍

,该集合属性里面的元素是另一个实体时,则默认未一对多关系,即使没有显示的指定一对多的关系,EF会默认的设置主外键(主从)关系 (3)、一对一的实体关系,需要手动设置主从关系 (4)、多对多无载荷关系实体...) Convention EF中,两个实体间的关系是通过导航属性的方式来实现,每一个对象都能拥有一个它所参与的关系的导航属性,导航属性提供了一种方式在两端来操作这个关系来获取我们需要的数据,可以返回任何一方的引用对象...除了导航属性规定实体间的关系外,外键属性来式规定实体间方式的一种手段.Code First能够推断以下的命名属性为外键(优先级从上到下): (1)、导航属性名+关联实体的主键名 (2)、关联实体实体名+...关联实体的主键名 (3)、关联实体的主键名 注: (1)、当外键关系被检测到,Code First会根据外键的可空性来推断关系的具体形式;如果外键属性是可空的,那么关系会被设置为可选的,否则,关系就是必选的.... (2)、当关联实体的外键属性被设置为不为空,Code First会设置级联删除,反之不会。

2.4K100

优化OEA中的聚合SQL

由于没有使用其它的ORM框架,当时项目组决定做聚合SQL,主要是为了减少SQL查询的次数,来提升部分模块的性能。现在看来,当时虽然达到了这个目标,但是聚合SQL的API却不简单,使用极为不便。...首先,是为表生成什么样的列名,生成SQL时按照这种列名的约定进行生成,加载对象时则在大表中找对应列的数据。...框架中对象的聚合加载的实现,和手写时一样,也是基于原有的ReadFromTable方法的,也不复杂,贴下代码,不再一一描述: /// /// 聚合实体的加载器 /// 基于以上的基础,我们需要一个流畅的API来定义加载选项。...这一点对于一个框架设计人员来说,往往很重要,只有流畅、易用的API才能对得起你的客户:框架使用者。以下我只把给出几个为达到流畅API而特别设计的类。

2.2K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OData 协议的智能化语义互操作

    OData 的核心目标在于提供一种标准化的方式来创建和消费可查询且互操作的 Web API,从而打破数据孤岛,提升跨系统数据的共享价值。...分析其设计原则,可以发现五个关键维度,这些维度共同构成了其在企业级应用中的韧性: 核心原则 描述与实践含义 遵循 REST 原则 建立在 HTTP、AtomPub 和 JSON 之上,使用 URI 标识资源...因此,OData 推荐并实现了基于实体标签(ETag)的乐观并发控制。 当服务器返回实体时,会在响应头或元数据中包含一个 ETag,它通常是实体内容或版本号的哈希值。...这一机制在 SAP CAP、ASP.NET Web API 等主流框架中得到了自动化处理。...工具名称 核心职责 在 AI 工作流中的角色 list-entities 暴露实体清单。 帮助 LLM 识别当前业务场景涉及的对象。 find-navigation-path 路径推导。

    10710

    Java程序员面试题集(86-115)

    【补充】有人为选择和评判Web框架提出了20条标准,包括:开发人员的工作效率(能用1-5天搭建一个CRUD页面吗)、开发人员的看法(用起来有意思吗)、学习曲线(学了一个星期或一个月后能干活吗)、项目健康状况...答:主要有以下三项区别: ① 如果没有找到符合条件的记录, get方法返回null,load方法抛出异常 ②get方法直接返回实体类对象, load方法返回实体类对象的代理 ③ 在Hibernate 3...这个对象所保存的数据与数据库没有任何关系,除非通过Session的save或者saveOrUpdate把临时对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象。...答:延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加载。Hibernate使用了虚拟代理机制实现延迟加载。返回给用户的并不是实体本身,而是实体对象的代理。...首先,出现no session or session was closed就证明了系统中已经存在主外键关联,如果去掉延迟加载的话,则每次查询的开销都会变得很大。

    2.3K70

    一些设计上的基本常识

    API与SPI分离 框架或组件通常有两类客户,一个是使用者,一个是扩展者, API(Application Programming Interface)是给使用者用的, 而SPI(Service...Provide Interface)是给扩展者用的, 在设计时,尽量把它们隔离开,而不要混在一起, 也就是说,使用者是看不到扩展者写的实现的, 比如:一个Web框架,它有一个API接口叫Action...服务域/实体域/会话域分离 任何框架或组件,总会有核心领域模型,比如: Spring的Bean,Struts的Action,Dubbo的Service,Napoli的Queue等等 这个核心领域模型及其组成部分称为实体域...可配置一定可编程,并保持友好的CoC约定 因为使用环境的不确定因素很多,框架总会有一些配置, 一般都会到classpath直扫某个指定名称的配置,或者启动时允许指定配置路径, 做为一个通用框架,...应该做到凡是能配置文件做的一定要能通过编程方式进行, 否则当使用者需要将你的框架与另一个框架集成时就会带来很多不必要的麻烦, 另外,尽可能做一个标准约定,如果用户按某种约定做事时,就不需要该配置项。

    1K10

    SpringBoot2.x系列教程(八)SpringBoot常用注解汇总

    @ConfigurationProperties:基于类型安全的属性配置注入,可以将properties属性和一个Bean及其属性关联,从而实现类型安全配置。...Spring Web注解 @ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据或接口交互时使用,用于构建RESTful的api。...一般与@Table结合使用,是如果表名和实体类名相同的话,@Table可以省略。...@Table:当实体类与其映射的数据库表名不同名时需要使用@Table注解说明,该标注与@Entity注解并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。...@JoinColumn:用来指定与所操作实体或实体集合相关联的数据库表中的列字段。一对一,本表中指向另一个表的外键;一对多,另一个表指向本表的外键。

    1.8K10

    【Java关系映射入门】实战二

    下面详细解析 @OneToOne, @OneToMany, @ManyToOne, @ManyToMany 的原理、使用及关键注意事项: 核心原理: 这些注解将对象间的关联关系(基于面向对象)映射到数据库表间的关联关系...独立的关联表: 创建一个只有两个外键列的表(较少用,不如前两种高效)。 使用: 在持有外键的一方(关系拥有方)使用 @OneToOne。...共享主键: 需要额外配置(如 @MapsId)让从实体使用主实体的主键作为自己的主键和外键。更复杂,但能节省一列。...关联表通常只有两列,分别是两个实体的外键,组合起来作为关联表的复合主键(或使用单独的主键列)。 使用: 在任意一方或双方使用 @ManyToMany 标注集合字段。...DTO 投影: 在需要传输数据到表示层或 API 时,优先考虑使用 DTO (Data Transfer Object) 或接口投影,只选择需要的字段和关联数据,避免加载整个实体图和大量不必要的数据。

    11710

    Java架构-一些设计上的基本常识

    1、API与SPI分离 框架或组件通常有两类客户,一个是使用者,一个是扩展者。...比如: 一个Web框架,它有一个API接口叫Action, 里面有个execute()方法,是给使用者用来写业务逻辑的。然后,Web框架有一个SPI接口给扩展者控制输出方式。...2、服务域/实体域/会话域分离 任何框架或组件,总会有核心领域模型,比如: 实体域:像Spring的Bean,Struts的Action,Dubbo的Service,Napoli的Queue等等 。...8、可配置一定可编程,并保持友好的CoC约定 因为使用环境的不确定因素很多,框架总会有一些配置, 一般都会到classpath直扫某个指定名称的配置,或者启动时允许指定配置路径, 做为一个通用框架,应该做到凡是能配置文件做的一定要能通过编程方式进行..., 否则当使用者需要将你的框架与另一个框架集成时就会带来很多不必要的麻烦。

    88120

    ASP.NET MVC5高级编程——(3)MVC模式的模型

    而模型一般有:面向业务的模型对象和面向视图的模型对象。 2 什么是主键属性,什么是外键属性?...而称ArtistID属性为外键属性(foreign key),因为与模型对应的数据库中,专辑表(Album)和艺术家(Artist)表存在对应的外键关系,即ArtistID是Album表的外键!...基架模版检测模型类的定义,然后生成控制器以及与该控制器关联的视图,有些情况下还会生成数据访问类。...4.执行基架代码 4.1用实体框架创建数据库--local-DB虚拟数据空间 EF框架的代码优先方法会尽可能地使用约定而非配置(即MVC中的约定优于配置)。...使用TryUpdateModel()方法,则会在验证成功时返回true,失败或发生异常时返回false: ? ?

    6.7K40

    框架篇

    相同点:屏蔽jdbc api的底层访问细节,使用我们不用与jdbc api打交道,就可以访问数据。     ...ibatis的好处:屏蔽jdbc api的底层访问细节;将sql语句与java代码进行分离;提供了将结果集自动封装称为实体对象和对象的集合的功能,queryForList返回对象集合,用queryForObject...返回单个对象;提供了自动将实体对象的属性传递给sql语句的参数。   ...一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同。         ...容器:Spring 包含并管理应用中对象的生命周期和配置。   MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。

    97720

    【Java关系映射入门】实战一

    下面详细解析 @OneToOne, @OneToMany, @ManyToOne, @ManyToMany 的原理、使用及关键注意事项: 核心原理: 这些注解将对象间的关联关系(基于面向对象)映射到数据库表间的关联关系...数据库体现: “多”方对应的表拥有一个外键列,指向“一”方表的主键。 使用: 在“多”方实体类中,使用 @ManyToOne 标注关联字段。...通常与 @ManyToOne 构成双向关联。 数据库体现: 关系由“多”方表的外键维护(与 @ManyToOne 相同)。...@OneToMany 本身不直接在数据库创建新结构,它定义了“一”方如何访问基于外键关联的“多”方集合。 使用: 在“一”方实体类中,使用 @OneToMany 标注集合字段。...: 在双向 @OneToMany 中,必须使用 mappedBy 并将关系的维护权交给 @ManyToOne 端(即外键拥有者)。

    12710

    Apache Shiro权限框架理论介绍

    Shiro拥有易于理解的API,你可以快速且容易地使用它来保护任何应用程序——从最小的移动应用程序到最大的web和企业应用程序。...Shiro 能做什么: 认证:验证用户的身份 授权:对用户执行访问控制:判断用户是否被允许做某事 管理:在任何环境下使用 Session API,即使没有 Web 或EJB 容器。...由于环境的多样性,使得 Shiro 可以使用多种配置机制。 users: ini 配置:ini 实际上是一个文本配置,包含了由唯一命名的项来组织的键/值对。...---- Shiro 注销 logout(注销):currentUser.logout(); 调用 logout() 方法时,现有 Session 将失效,而且身份将失去关联(在Web 应用程序中,RememberMe...建议在开发中,Controller层使用原生的HttpSession对象,在Service层中使用Shiro提供的Session对象。

    1.6K30

    CodeSpirit 框架核心亮点

    概述 CodeSpirit(码灵)是一款基于 .NET 9 构建的革命性全栈低代码开发框架,通过智能代码生成引擎与AI深度协同,实现后端驱动式全栈开发范式。...配置驱动切换: 通过配置文件一键切换数据库类型 • 独立迁移管理: 为每种数据库维护独立的迁移文件 • 自动迁移应用: 应用启动时自动检测并应用待处理迁移 • ️ 统一业务逻辑: 业务代码与数据库类型解耦...约定优于配置 • 遵循标准约定 • 降低学习成本 3.9 事件驱动架构 基于RabbitMQ的分布式事件系统 核心特性 • 租户感知事件: 多租户场景自动隔离 • 异步解耦: 提升系统响应性能 •...缓存标签: 支持按标签批量清除关联缓存 • 分布式锁: 基于Redis的高性能分布式锁实现 多级缓存架构 请求 → L1缓存(内存) → L2缓存(Redis) → 数据源 ↓ 命中返回...OSS、S3等 使用方式 • 上传文件时自动生成文件ID和临时引用 • 创建实体时发布确认引用事件,引用计数+1 • 删除实体时发布取消引用事件,引用计数-1 • 引用计数为0时,文件自动删除 文件引用生命周期

    22610

    第四章:使用QueryDSL与SpringDataJPA实现多表关联查询

    对于业务逻辑复制的系统来说都存在多表关联查询的情况,查询的返回对象内容也是根据具体业务来处理的,我们本章主要是针对多表关联根据条件查询后返回单表对象,在下一章我们就会针对多表查询返回自定义的对象实体。...本章目标 基于SpringBoot框架平台完成SpringDataJPA与QueryDSL多表关联查询返回单表对象实例,查询时完全采用QueryDSL语法进行编写。...构建项目 我们使用idea工具先来创建一个SpringBoot项目,添加的依赖跟第三章:使用QueryDSL与SpringDataJPA完成Update&Delete一致。...@Column(name = "tg_type_id") private Long typeId; } 我在商品表内并没有使用类型的实体作为表之间的关联而是只用的具体类型编号,有的时候也是根据你的需求来配置的...总结 本章的内容比较简单,我们使用QueryDSL完成了两个实体关联查询并返回单实体实例的方法,QueryDSL内也有LeftJoin、InnerJoin等关联查询不过都是基于具体实体类型来完成的,本章就不做解释了

    3.7K30

    SpringDataJPA笔记(1)-基础概念和注解

    SpringDataJPA的基础概念和注解 一 JPA的介绍 JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系...如声明一个实体类 Customer,它将映射到数据库中的 customer 表上 @Table 当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用...optional:表示该属性是否允许为null, 默认为true @Column 当实体的属性与其映射的数据库表的列不同名时需要使用@Column 标注说明,该属性通常置于实体的属性声明语句之前,还可与...如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic @Temporal 在核心的 Java API 中并没有定义 Date 类型的精度(temporal...one2one关系,关系维护端的主键作为外键指向关系被维护端的主键,不再新建一个外键列 元数据属性说明: name:列名。

    5.2K20

    Entity Framework 约定

    约定,类似于接口,是一个规范和规则,使用Code First 定义约定来配置模型和规则。在这里约定只是记本规则,我们可以通过Data Annotaion或者Fluent API来进一步配置模型。...二、关系约定 在数据库中,我们可以通过多张表的关联查询出数据,这多张表之间的关联,就是他们的关系。同样,也可以在模型中定义这样的关系。...EF中定义关系要使用到导航属性,通过导航属性可以定义多个模型之间的关系。大部分情况下我们会将导航属性和外键属性结合在一起使用。...当EF检测出外键属性后,会根据外键属性是否为空来判断关系,如果外键可以为空,那么模型之间的关系将会配置成可选的,Code First 不会再关系上配置级联删除。...在Code First 不能推断出模型中的主键,并且没有通过Data Annotations 或者Fluent API进行手动配置主键时,该模型将会自动被配置为复杂类型,检测复杂类型时要求该类型没有引用实体类型的属性

    1.7K10

    Hibernate学习笔记2

    4.Hibernate关联映射-数据对象三种关系介绍 Hibernate框架基于ORM设计思想,它将关系型数据库中的表与我们java中的类进行映射,一个对象就对应着表中的一条记录,而表中的字段对应着类中的属性...数据库中表与表之间存在着三种关系,也就是系统设计中的三种实体关系。 4.1. 一对一 原则有两种: 唯一外键对应:在任意一方添加外键来描述对应关系 主键对应:一方的主键作为另一方的主键 ?...一对多(多对一) 客户与订单之间一对多关系(多对一) 建表原则:在多的一方添加外键来描述关联关系 ?...我们可以使用inverse属性来设置,双向关联时由哪一方来维护表与表之间的关系。 ? Inverse它的值如果为true代表,由对方来维护外键。...Inverse它的值如果为false代表,由本方来维护外键。 关于inverse的取值: 外键在哪一个表中,我们就让哪一方来维护外键。 5.6. 对象导航 ? 5.7.

    1.8K40

    API快速开发平台设计思考

    基于对象建模驱动 在整个API开发平台实现中,核心思想仍然应该是基于对象建模驱动,通过对象建模很好的实现接口和底层数据库,数据库表之间的解耦,也方便实现底层多数据库,多表的支持能力。...对象建模和API接口契约 可以直接在API开发平台创建对象,并对数据项进行定义,对象是一个多层的树状结构实体。一个对象可以向数据库生成多张表。...定义好的对象可以直接生成类似RAML,YAML,WADL等接口契约文件。 类似Swagger工具一样,完成的对象建模本身也可以直接导出不同语言,不同开发框架下的客户端消费框架,服务端提供框架代码。...一个对象可以映射到多张数据库表,因此在映射过程中除了完成数据库表和字段映射外,还需要完成主外键关联关系的映射操作。 在完成对象模型和数据库表之间的映射和适配后,基本发布的API接口已经可用。...复合对象一次生成 比如将订单作为一个对象,实际包括了订单头和订单明细表,而在进行API生成时候可以一次生成基于订单对象的插入操作,查询操作。最终查询出来的是一个订单复合实体Json数据。

    97810
    领券