首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用泛型(域模型,而不是持久层)在Java中有多对多的集合吗?

在Java中,使用泛型(域模型,而不是持久层)实现多对多关系时,可以使用集合来表示。通常,可以使用SetList接口来存储相关对象。

例如,假设有两个实体类:StudentCourse,一个学生可以选多门课程,一门课程可以被多个学生选。可以在这两个类中定义集合来表示这种关系。

代码语言:java
复制
public class Student {
    private Set<Course> courses;
}

public class Course {
    private Set<Student> students;
}

在这个例子中,Student类中的courses集合表示一个学生选的所有课程,而Course类中的students集合表示选这门课程的所有学生。

当然,这只是一个简单的例子,实际应用中可能需要更复杂的实现,例如使用中间表或者其他数据结构来表示关系。但是,总之,在Java中使用泛型可以实现多对多关系,并且可以使用集合来存储相关对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

打开orika正确方式

其二,远程调用需要额外注意网络传输开销,如果生产者方从数据库加载出了一个一依赖,消费者只需要一这个实体某个属性,实体会使得性能产生下降,并没有很好方式其进行控制(忽略手动set)。...BeanCopier cglib BeanCopier采用了不同方法:它不是利用反射属性进行赋值,而是直接使用ASM MethodVisitor直接编写各属性 get/set方法(具体过程可见...集合可以自动映射?这一切Orika都帮助我们完成了,默认行为下,只要类字段名相同,Orika便会尽自己最大努力帮助我们映射。...映射 支持是Orika另一强大功能,这点在文档中只是被提及,网上并没有找到任何一个例子,所以在此我想稍微着重介绍一下。...我们可以发现MapperFacade具有一系列重载方法,各种类型拷贝进行支持 ?

3.7K110

DDD 中几个困难问题

如果不长眼程序员把订单项直接修改了,不更新订单,就会带来 bug。 但是,遗憾是我们内存不是无限大,而且数据会在断电后丢失。我们必须把数据从磁盘中读取出来,磁盘访问速度很慢。...数据磁盘中组织形式使用集合+关联方式存放,这是由于我们为了降低数据冗余和方便查询不得已为之。这就是关系模型和对象模型差异,不得不采用一些技术方法转换(ORM)。...因此,给领域模型操作能力,应该仅限于操作自己属性。领域模型构建、业务处理、持久化应该交给主体来做。...比如 JPA 是一种持久化实现,需要从领域输入对象类型信息和数据信息,客体就是对象。 多关系一般怎么处理? 多就是客体含混不清,迷失了中间模型。...现实中,一个老板可以有多个公司,一个公司也可以由多个老板投资。他们之间多关系是通过 “股东” 这个客体来承载

36410

Java程序员:从菜鸟程序员到架构师六步走

01 第一阶段:Java基础篇   熟练掌握Java基础语法,理解面向对象;掌握Java异常处理,集合,多线程,文件IO;另外在UI编程方面对Swing有所了解即可。...要掌握html常用标签及其作用;掌握CSS基本语法,选择器,CSS布局,知道什么是盒子模型,以及了解常用CSS属性;掌握JavaScript基本语法,掌握DOM操作,JS内置对象以及常用函数与自定义函数...05  第五阶段:数据库   现在用最多数据库都是关系数据库,利用SQL语句进行数据操作。   1、MySQL   一款轻量级开源数据库,小型项目上用尤其。   ...06 第六阶段:J2EE框架篇   1、Spring   Spring是项目的骨架,无论是不是web项目,使用Spring都有很大好处。   ...5、mybatis   作用同hibernate,是另一款较hibernate简单Java持久框架。

29020

DDD理论学习系列(12)-- 仓储

恰巧这正是仓储要点。基础持久化框架提供了开放接口用于对数据模型查找和修改,仓储通过使用定义命名查询方法来限制聚合访问。...此外,可以使用多种形式持久化存储,例如文件、web服务器、关系数据库或NoSQL。领域模型问题抽象,具有丰富语言和行为,由实体和值对象组成。...但是,尝试将仓储应用所有仓储并不是一个好主意。对于简单聚合我们可以直接使用仓储来简化代码。...但对于复杂聚合,仓储可能就会不太适合,如果基于仓储方法进行数据访问,就会模糊聚合访问意图。...仓储是一个契约,不是数据访问。它明确表明聚合所必需数据操作。 ORM框架不是仓储。仓储是一种架构模式。ORM用来以面向对象方式来表示数据模型。仓储使用ORM来协调领域模型和数据模型

1.9K70

Java面试复习大纲2.0(持续更新)

熟练使用Java语言进行面向对象程序设计,有良好编程习惯,熟悉常用Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[] 2....表示运用了G架构,使用H作为视图I作为控制器并实现了REST风格请求;业务逻辑运用了J模式,并通过K实现事务、日志和安全性等功能,通过L实现缓存服务;持久使用了M封装CRUD操作,底层使用N实现数据存取...、jOOQ也是优秀持久解决方案;底层数据存取传统上是使用关系数据库,可以是MySQL、Oracle、SQLServer、DB2等,随着大数据时代来临,也可以采用NoSQL(如MongoDB、MemBase...据我所知,X技术虽然有A、B、C等好处,但也存在D和E问题,Y技术可以解决D和E问题。 3. 我您说X技术不是太熟悉,但我感觉它是一个不错解决方案,您能讲讲它工作原理? 4....,那么势必要提到全文检索技术,由于刚学不是很熟,根据自己掌握情况进行选择) 3.浏览器跨问题 (前台系统调用可以使用jsonp来实现浏览器跨问题,去年有学员花几个小时学习这个,仅凭此技术入职

1.9K70

腾讯给机会了?有点简单啊!

另一个非常重要原因就是Java中绝大部分方法或类都是用来处理类类型对象,如ArrayList集合类就只能以类作为他存储对象,而这时如果想把一个int数据存入list是不可能,必须把它包装成类...所以Integer存在是很必要应用 Java中,只能使用引用类型,不能使用基本类型。因此,如果要在使用int类型,必须使用Integer包装类。...Java集合中只能存储对象,不能存储基本数据类型。...因此,如果要将int类型数据存储集合中,必须使用Integer包装类。例如,假设我们有一个列表,我们想要计算列表中所有元素和。...,并且采用了高效数据结构,因此 Redis 瓶颈可能是机器内存或者网络带宽,并非 CPU,既然 CPU 不是瓶颈,那么自然就采用单线程解决方案了; Redis 采用单线程模型可以避免了多线程之间竞争

10910

2018春招总结

wifi怎么处理连接设备      tcp\ip是基于java还是底层调用      长连接和短连接差别      tcp\ip七模型(三面就是死在这里,面试官也很惊讶我竟然不会。。。...其实不是不会,而是这里我没听清,其实面试官想问是OSI七,但是我没听清。。。...也就是说上面这个是方法      类型参数主要用于声明类或方法;无界通配符主要用于使用类或方法,主要拿来使用定义好。     ...PECS(Producer Extends Consumer Super)原则  Java擦除概念     hashMap数组实现,讲讲当节点数小于8时候,红黑树会退化成链表?     ...(16位)      大小写转换怎么设计,不局限于英文,包括法文等等      java      java为什么要采取擦除这种方式实现      java作者是谁    总结

1.1K50

DDD实现之路

领域和子(Domain/Subdomain) 既然是领域驱动设计,那么我们主要关注点理所当然应该放在如何设计领域模型上,以及领域模型划分。...例如货币,通常交易中,我们都将它建模成了一个值对象,因为我们花了20元买了一本书,我们只是关心货币数量而已,不是关心具体使用了哪一张20元钞票,也即两张20元钞票是可以互换。...在建模时,我们通常做法是User对象中包含一个Blog集合,然后每个Blog中又包含了一个Post集合。你真的需要这么做?...资源库分为两种,一种是基于集合,一种是基于持久。顾名思义,基于集合资源库具有编程语言中集合特征。...使用面向集合资源库时,add()方法只是用来将新聚合加入资源库;而在面向持久资源库中,save()方法不仅用于添加新聚合,还用于显式地更新既有聚合。

40720

DDD领域驱动设计概念解析

实体和值对象 领域模型中,实体和值对象是组成领域模型基础单元,所以理解他们 很重要 实体 我们先看看它定义:拥有唯一标识符,且标识符经历各种状态变更后仍能保持一致,这些对象而言,重要不是其属性...但是在有些复杂场景下,实体与持久化对象可能是一或者关系. 例如: 用户user 与 角色role 两个持久化对象组成权限实体,一个实体对应两个持久化对象,这是一场景。...聚合之间是通过关联外部聚合根ID方式引用,不是直接对象引用方式 边界之外使用最终一致性。聚合内数据一致性,聚合之间数据最终一致性。一次事务中,最多更改一个聚合状态。...这种类Java中叫POJO,.NET中叫POCO。 贫血模型:贫血模型中包含了一些业务逻辑,但不包含依赖持久业务逻辑。这部分依赖于持久业务逻辑将会放到服务中。...所以,使用充血模型领域是依赖于持久,简单表示就是 UI->服务->领域持久。 胀血模型:胀血模型就是把和业务逻辑不相关其他应用逻辑(如授权、事务等)都放到领域模型中。

1K20

一小时入门Redis教程录制完毕

关系模型咱也用一句人话来解释就是类似”一一“、”一“、”模型。...这下你就能明白了吧,举个栗子: 以我们网络技术联盟站网站用户管理来举例 直观上看,每个用户属于一个网站,并且这个用户是唯一,这个模型就是一一;每个用户可以发布篇文章、多个评论、点多个赞,这个就是一...非关系数据库是与关系数据库相对数据库,每个对象直接没有直接关系,当然并不是不能发生关系,只是说非关系数据库不是为了其关系特制。...Redis使用场景 redis大多数程序员口中又被称为”内存数据库“,这个是因为redis数据不是存在硬盘中,而是存在内存中,既然存在内存中,那么对于计算机底层结构了解朋友都知道,内存速度宏观上仅次于...持久化方式: 数据库持久化 本地硬盘持久化 数据入库其实就是数据持久化,java开发中,有一叫做持久持久就是跟数据库对接

27540

收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想Offer呀~

可以static环境中访问非static变量Java支持继承么,为什么? 用最有效率方法计算2乘以8? 构造器是否可被重写? char变量中能不能存贮一个中文汉字,为什么?...谈谈你java.lang.Object对象中hashCode和equals方法理解。什么场景下需要重新实现这两个方法。 jdk1.5中,引入了存在是用来解决什么问题。...java8新特性 字节流与字符流区别 Java 事件机制包括哪三个部分?分别介绍下。 为什么等待和通知是 Object 类不是 Thread 中声明?...每个对象都可上锁,这是 Object类不是 Thread 类中声明,为什么呢? 为什么char 数组比Java String 更适合存储密码?...内部类作用 中extends和super区别 内部类有几种,项目中有哪些应用 utf-8编码中中文占几个字节;int几个字节?

1.1K20

关于领域模型转换那些事儿

千万不要为了分层分层。 过多会增加系统复杂度和开发难度。因为应用被细分为多个层次,每个关注点不同。所以在这基础上,抽象出不同领域模型。也就是我们常见DTO,DO等等。...各个领域模型分层上传输关系大概是这样: ? 在给出参考中并没有模型对象进行非常明确划分,特别是BO、AO、DTO界限不是非常明确。这也是因为系统处理业务不同、复杂度不同导致。...那我们再来看看数据持久,上面也提到了,数据持久与数据库是一一关系,上一订单信息其实可以拆解为多个持久对象,其中包含:订单持久对象(OrderDO),商铺持久对象(ShopDO),用户持久对象...例如,上面这两个不同模型转换时,我们就需要考虑一些问题: 原对象和目标对象相同属性类型不一样,有的是Date,有的是BigDecimal,还有的是枚举 属性名称也不一样 集合类属性中也不一样...DTO对象,这是因为List被擦除了,而且是浅拷贝,所以造成这种现象。

1.1K10

Java基础】Java使用

增加之前,相关程序是使用继承实现。...因为我们知道Object是所有类父类,也就是说所有类都继承了Object。所以之前是将参数和类型定义为Object,通过强制类型转换也能达到我们目的。...但是由于这种程序设计我们无法提前预测数据类型,也就导致了可以类型数据交互,产生后续强制数据类型转换时无法确定该数据类型。...3 定义 定义需要在类名或接口名后指定,格式如: public class Test{} 这里大写英文字母并不是必须是E,但在开发规约中,一般使用E、K、V、T来定义...没错,Java很多地方都大规模使用,接触最多就是集合框架中,如: List list=new ArrayList(); 这是我们初始化一个ArrayList实例对象,

53820

如何运用领域驱动设计 - 存储库

仓储是反模式 关于存储厍模式存在非常误解和混淆,许多人认为它是多余仪式以及不必要抽象,它隐藏了底层持久化框架能力。..., IAggregateRoot { } 此处使用了C#接口约束,将仓储服务者约束为了一个聚合根。...为了仓储而使用仓储,为了看上去像DDDDDD,那不是自己骗自己?...它是一个程序边界以及一个明确约定,在其上命名方法时它需要工作量与领域模型对象所需工作量一样。你存储库约定应该是特定以及能够揭示意图并领域专家具有意义。...回答这个问题之前,我们得先理解一下什么是领域模型和数据模型:领域模型是问题抽象,富含行为和语言;数据模式是一种包含指定时间领域模型状态存储结构,ORM可以将特定对象(C#类)映射到数据模型

95830

解析java(一)

:类名之后多了个,并且实例类型可以不是具体类型而是不确定T类型。...其中,我们管T叫做类型变量,类型变量一般使用大写字母表示并且很短(java使用E表示集合元素类型,K和V分别表示关键字和值类型)。      ...我们都知道java中有编译器和虚拟机,但实际上我们在这两者看来是不一样,也就是说,虚拟机是不认识只有我们强大编译器是认识。那他们是怎么实现统一呢?...java中,无论何时定义了一个,它都会自动生成一个相应原始类型。我们叫这个过程为:类型擦除。...难道我们类型擦除就是将所有的未知类型转换为Object类型?当然不是,类型擦除是有规则不是一味将未知类型T转换成Object类型

88460

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

Java程序员面试题集(86-115) 摘要:下面的内容包括Struts 2和Hibernate常见面试题,虽然Struts 22013年6月曝出高危漏洞后已经显得江河日下,Spring MVC...)、编程语言支持(能够同时使用多种语言开发)、文档质量(常见用例和问题都在文档中有体现)、出版图书(有没有行业专家使用了它并分享了自己使用经验)、REST支持(能按HTTP协议设计宗旨使用该协议...持久状态:持久化对象实例在数据库中有对应记录,并拥有一个持久化标识。...112、举一个多关联例子,并说明如何实现多关联映射。 答:例如:商品和订单、学生和课程都是典型多关系。...可以实体类上通过@ManyToMany注解配置多关联或者通过映射文件中和标签配置多关联,但是通常情况下,可以将多关联转换成两个一关联来实现多关联映射

1.8K70

由Spring应用瑕疵谈谈DDD概念与应用(一)

或者,你创建了一个聚合,然后发现这个聚合是如此庞大,它为什么引用了如此对象,难道又是我做错了吗? 本文将会谈谈有关领域驱动设计,和领域驱动设计中使用贫血、失血和充血模型。...业务逻辑位于服务中,管理对象数据。 服务中,应用每个实体对应一个服务类。 使用 Spring 框架构建应用开发者很乐于谈论依赖注入好处。...业务对象状态在这里保存。业务对象持久化和它们状态可能会委托给基础设施。 基础设施其它来说,这一是一个支持性库。...它提供之间信息传递,实现业务对象持久化,包含用户界面层支持性库等。 基本概念 实体(Entity) 当一个对象由其标识(不是属性)区分时,这种对象称为实体(Entity)。...它不是数据库封装,而是领域与基础设施之间桥梁。DDD 关心是领域内模型不是数据库操作。

85720

关于Java持久化相关资源汇集:Java Persistence API

此外,我们将默认事务属性更改为“REQUIRED”,这个默认值比以前值“SUPPORTS”更常用。因此,完全不必为业务方法配置事务行为。 JPA实体仅供本地使用,重点关注模型。...回答:EntityManager负责对象模型和数据库之间交互,但是仍然会话中实现安全性、事务控制、远程处理、有状态临时数据存储,操作单元编程模型无法解决以上问题。...回答:根据我经验,这实际上取决于组织因素,不是其他因素。一些工作室更喜欢存储过程中进行大量编码,另一些则喜欢Java中实现其业务逻辑。每种方法各有优势和代价。...另一方面,数据库承担这么负载将对该应用程序用户产生负面影响,因此最好付出一定代价跨网络拉出这些数据,以便将该数据库用作严格存储系统,不是计算引擎。...回答:持久化单元是类和配置设置集合,可以根据该集合创建EntityManagerFactory。它在 persistence.xml 文件中作为一个条目出现。

2.5K30
领券