java - 理解 ORMLite

标签 java android orm repository ormlite

对于我的工作,我试图说服我的同事使用 ORMLite(刚刚发现它),而不是编写我们自己的繁琐且容易出错的数据库访问器代码。我有大约 2 个小时的时间来完成这个工作,所以我希望你们能帮助我!

所以我现在正在尝试理解我发现的示例应用程序 here 。据我了解,您需要为您将拥有的每个模型/表创建一个类。在示例中,有一个 Person.java 和一个 App.java 文件。在这些文件中,您需要为每个字段手动创建所有 getter 和 setter。到目前为止一切顺利。

在这些文件旁边,我有以下文件:

  • DatabaseHelper.java
  • DemoRepository.java
  • PersonAdapter.java
  • DemoORMLiteACtivity.java

我的问题是:

  1. 从这个意义上来说,存储库是什么?为什么需要它?我正在查看代码,但我无法真正理解它的意义。
  2. 此外,我是否还需要自己创建所有这些文件,还是其中一些文件是自动生成的?
  3. 如果我需要自己创建所有这些文件,除了不需要几行 SQL 之外,使用 ORM 的优势是什么?

最佳答案

What is a repository in this sense? Why is it needed? I'm looking through the code and I can't really make sense out of it.

呃,您提供的链接很好地描述了它:

The repository layer wraps all ORMLite calls hiding any exceptions and code relating to all database operations.

因此,“存储库”提供了特定的业务逻辑方法,这些方法又调用数据访问对象或 DAO 方法。它是您调用数据库的实用程序类。在他们的示例中,他们有 deletePerson(...) ,它执行一系列数据库操作来删除 Person 及其关联的 App 条目。

DAO 类提供所有与实体无关的 queryById(...) 类型的方法。在我看来,存储库类为相关的特定应用程序添加了非常具体的功能。

如果你看ORMLite HelloAndroid example code ,您可以看到它没有存储库类,因此这不是必需的。

Furthermore, would I need to create all these files myself as well, or are some of these auto-generated?

您将需要自己创建实体文件和数据库助手。数据库助手是处理您可能已经拥有的 onCreate(...)onUpgrade(...) 方法的类。有一个基类 OrmLiteSqliteOpenHelper 可以帮助解决这个问题。

If I would need to create all these files myself, what's the advantage of using an ORM, except for not needing the couple lines of SQL?

ORM 是个好主意的原因有很多。对我来说,这与可扩展性有关。当然,现在它是“几行 SQL”,但除非您没有增长计划,否则这几行很快就会变得复杂。使用 ORM,您可以管理实体,而不必担心数据库。

这里有一些更多信息:

关于java - 理解 ORMLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18955301/

相关文章:

java - 如何将文件输入拆分为2个不同的数组java

java - JPQL 中有这样的 CASE 表达式吗?

sql - 将嵌套 XML 数据与数据库表结构进行匹配的最快方法

java - 使用 Hibernate 执行 "IN"查询

java - 如何使用 hibernate 逆向工程排除多对一关系?

java - Android - findViewWtihTag 返回 null

java - 无法在 Java 11 中访问 sun.security.pkcs11.SunPKCS11

android - 从 PagerAdapter 开始新的 Activity

java - Android Horizo​​ntalScrollView 内容拉伸(stretch)

android - 如何重启onCreate函数