gpt4 book ai didi

google-app-engine - 在 GAE、Java、JDO 等上下文中,DAO 是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:31 25 4
gpt4 key购买 nike

我刚开始用 Java 编写 GAE Web 应用程序,所以我对所有这些东西都是新手。我使用 JDO 来存储数据。我正在阅读大量在线资料(论坛、教程...),到处都可以看到 DAO,但我真的不明白它是什么。是的,数据访问对象,技术...但是当有人将变量命名为 userDAO 时,该变量将包含什么?

让我们考虑以下代码(来自 GAE 文档):

PersistenceManager pm = PMF.get().getPersistenceManager();

Employee e = new Employee("Alfred", "Smith", new Date());

try {
pm.makePersistent(e);
} finally {
pm.close();
}

它真的很简单,对我来说很有意义......但是在这个例子中你会怎么称呼 DAO?

这可能是个愚蠢的问题,但对我有很大帮助。

最佳答案

“DAO”代表数据访问对象。这是一种通过使用提供更直观访问器的类包装给定模型实体来封装模型逻辑的方法。

我不确定您提供的示例,但我愿意推测。看起来 PersistanceManager 是一个管理应用程序数据持久层的对象。您的 Employee 对象可能通过此 PersistanceManager 实例持久存储,并且您构建的 Employee 对象可能是一个提供管理接口(interface)的 DAO该员工的状态比直接通过 PersistanceManager 管理状态更简单。

在 App Engine 上,数据存储区的一大性能限制是反序列化 Protocol Buffer 。如果向模型实体添加复杂的方法,则会增加对象的大小,这会在必须反序列化对象时导致性能下降。这里的要点是,您不想在数据存储实体规范中添加除基本属性之外的任何内容。添加辅助方法会导致性能下降。

因此,App Engine 上的一个常见模式是使用 DAO 将模型实体与一个类包装在一起,该类可以提供这种更高级别的逻辑,而不会影响序列化性能。

关于google-app-engine - 在 GAE、Java、JDO 等上下文中,DAO 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com