java—业务类和域类之间有什么区别?持久类是什么意思?

vnzz0bqm  于 2021-06-30  发布在  Java
关注(0)|答案(5)|浏览(284)

业务类和域类有什么区别?持久类是什么意思?

zpjtge22

zpjtge221#

业务类提供特定于域的逻辑。
域类是表示域的一部分的实体。
持久类,或者更好的持久示例,在服务器重新启动后具有相同的数据(数据通常存储在某种数据库中)。
让我们以银行交易为例。你会有一个持久的域类 Account . 我的 Account (示例)将有一个字段 Balance 值为1000。
处理借项的事务业务逻辑类似于 AccountDebit 并有作为方法 debitAccount(Account account, int amount) ,并作为业务逻辑

int balance = account.getBalance();
if (balance < amount) {
   throw exception("You're too poor");
}
balance = balance - amount;
account.setBalance(balance);
account.commit(); // save the values to persistent store

我知道钱通常不是整数,而且借记的金额通常是贷记给其他人的:)

2w3rbyxf

2w3rbyxf2#

域类是来自域模型的类,martin fowler在企业应用程序体系结构模式中描述如下:
包含行为和数据的域的对象模型。

最糟糕的情况是,业务逻辑可能非常复杂。规则和逻辑描述了许多不同的情况和行为倾向,正是这种复杂性使对象得以处理。域模型创建了一个由相互关联的对象组成的网络,其中每个对象都代表一些有意义的个体,无论是大到公司还是小到订单上的一行。
对我来说,与业务类没有区别:业务对象执行的业务逻辑不比域对象多或少(业务逻辑在域对象之外实现的域模型称为贫血域模型,这是一个贬义词),域对象和业务对象是同一回事。
最后,持久类是一个可以。。。持久化,这意味着将信息的内存表示形式传输到一个物理存储器,该物理存储器将在jvm的活动期之后持久化。通常,持久性是使用数据库实现的(但这并不是唯一的解决方案,例如,请参见对象持久性)。典型的持久性操作包括创建、读取、更新和删除,这些操作称为crud操作。域对象通常是持久性的,即您可以通过一个api对它们执行crud操作,该api隐藏所选持久性引擎的底层细节。

oxosxuxt

oxosxuxt3#

“域”类是对数据建模的类。它通常用于将数据从数据存储(例如数据库)Map到内存中的对象。业务类是应用程序使用的类。它可以与域类相同,通常执行某种业务逻辑或处理。
持久性是指将对象状态保存到某个数据存储(例如xml、文本文件或更常见的数据库)的能力。因此,无论应用程序是否正在运行,这种对象的状态都会“持续”。
听起来你对对象/关系Map很好奇。我建议您先阅读这篇维基百科文章。

qojgxg4l

qojgxg4l4#

业务类是为特定项目设计和使用的类,很难被其他项目重用。
域类是为特定域设计和使用的类,可以由执行类似操作的多个项目使用。

例如,jdbc类是用于数据库访问的域类。swing类是用于gui构造和操作的域类。 Form1 其中包含一组用于显示“hello world”消息的组件。

wz3gfoph

wz3gfoph5#

术语business和domain常用作同义词。就我个人而言,我更喜欢术语域模型、域对象等,因为它们不受业务约束(不管是什么)。
例如,在safewhere中,我们主要处理基于声明的身份和授权。我们建模的概念与传统的“业务”几乎没有共同点,因此在这种情况下,我认为领域模型是一个更合适的术语。

相关问题