(Translated by https://www.hiragana.jp/)
主动记录 - 维基百科,自由的百科全书 とべ转到内容ないよう

しゅ动记录

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん

ざい软件工程こうていなかしゅ动记录模しき(active record pattern)いち构模しき见于ざい关系すうすえちゅうそん储内そんちゅう对象てき软件ちゅう。它在Martin Fowlerてき2003ねんちょくわだて业应よう构的しき》书中命名めいめい[1]符合ふごう这个しきてき对象てきせっこうはた包括ほうかつ函数かんすう插入そうにゅう更新こうしん删除,じょう直接ちょくせつ对应于在そこ层数すえ库表かくちゅうれつてきあるおおあるすくなてき属性ぞくせい

しゅ动记录模しき访问ざいすうすえ库中てきすうすえてきいち种方しきかずすえ库表ある视图包装ほうそういれよし此,对象实例连结到这个ひょうかくてきいち个单いちぎょうざい一个对象建立之后,ざい保存ほぞん时将一个新行增加到表格中。载的にんなん对象从数すえ库得いた它的しんいきざい一个对象被更新的时候,ざいひょうかくちゅう对应てきぎょう也被更新こうしん包装ほうそう类为ざいひょうかくある视图ちゅうてきまい个列实现访问方法ほうほうある属性ぞくせい

这个しき常用じょうよう于对ぞう持久じきゅう工具こうぐ对象关系うつ(ORM)これちゅう典型てんけいてきそと联系也通过一个属性而被显露为适当类型的一个对象实例。

实现

[编辑]

这个概念的がいねんてき实现以在很多编程环境ちゅうてきかくかまちちゅう找到。れい如,如果ざいすうすえ中有ちゅうういち个表かくparts,它具有ぐゆうれつnameくし类型)priceすう值类がた),而主动记录模しきようPartらい实现,伪码为:

part = new Part()
part.name = "Sample part"
part.price = 123.45
part.save()

它在partsひょうかくちゅう建立こんりゅうゆう给定值的いち个新ぎょう,并且粗略そりゃくてきとう价于SQL命令めいれい

INSERT INTO parts (name, price) VALUES ('Sample part', 123.45);

はん过来,这个类可以被ようらい查询这个すうすえ库:

b = Part.find_first("name", "gearbox")

这会找到いち个新Part对象,于在partsひょうかくちゅうnameれつてき值为"gearbox"てきだいいち个匹はいぎょう使用しようてきSQL命令めいれい可能かのう类似于下めんしょれつ具体ぐたい赖于这个すうすえ库的SQL实现细节:

SELECT * FROM parts WHERE name = 'gearbox' LIMIT 1; -- MySQL or PostgreSQL

しゅ动记录框

[编辑]

しゅ动记录框一般いっぱん兼有けんゆうORMかまちてきこうのうただししゅ动记录不简单てきORM。关系がたすうすえ往往おうおうつうそとらいひょうじゅつ实体てき联系,しゅ动记录在すうすえげん层面じょう也将这种联系うつ为对ぞうてき关联えいAssociation (object-oriented programming)聚集えいObject composition#Aggregation著名ちょめいてきれいかい方案ほうあんうずたかWeb开发かまちRuby on Rails,其默认使用しよういち个纯Rubyうつしなりてきしゅ动记录框らい驱动MVCなかてき模型もけい层。此外还有:

类似しき

[编辑]

しゅ动记录和くだりすうすえ门径えいRow Data Gateway十分じゅうぶん相似そうじただし前者ぜんしゃ领域模型もけいしききさきしゃただ一种数据源模式。しゅ动记录适あい非常ひじょう简单てき领域需求,ゆう其在领域模型もけいすうすえ库模がたじゅうふん相似そうじてきじょう况下。如果ぐういたさら复杂てき领域模型もけい结构(れい如用いた继承、策略さくりゃくてき领域模型もけい),往往おうおう需要じゅよう使用しようぶん离数すえげんてき领域模型もけい,结合かずすえうつ使用しよう

资料らいげん

[编辑]
  1. ^ Fowler, Martin. Patterns of enterprise application architecture. Addison-Wesley. 2003 [2020-11-07]. ISBN 978-0-321-12742-6. (原始げんし内容ないようそん档于2021-11-24). うけたまわ载数すえ和行かずゆき为二しゃてき对象。多数たすう这种すうすえ持久じきゅうてき需要じゅようそん储在すうすえ库中。しゅ动记录使用しようさいあかり显的方式ほうしきしょうすうすえ访问逻辑放置ほうちざい领域对象ちゅう。这种方式ほうしき所有しょゆうじんみやこ知道ともみち如何いか读和うつし们的すうすえ进出すうすえ库。 
  2. ^ Orator - An ActiveRecord ORM for Python. [2020-11-08]. (原始げんし内容ないようそん于2020-12-16). 
  3. ^ ObjectiveSql页面そん档备份そん互联网档あん
  4. ^ JAVA 极速WEB+ORMかまち JFinal. [2020-11-08]. (原始げんし内容ないようそん于2020-11-21). 

外部がいぶ链接

[编辑]