CoreData 在 iOS 中被解释为“模式驱动的对象图管理和持久性框架”,主要与 SQLite 一起用作持久性存储。不一定,您可以仅在内存中使用它,而无需将任何托管对象保存到 SQLite 之类的持久性存储中。
看看 Hibernate,它似乎有很多相似之处,而我质疑它们之间的主要区别。
模式驱动
CoreData 使用一个模式,主要是(在 iOS 中),一个包含实体的 xcdatamodel 文件等等。
据我所知,Hibernate 没有用于 xcdatamodels 的 xcode 之类的图形编辑器,但是由于 JPA,您可以将它用于 XML 文件或直接注释。两者都是计划,恕我直言。
对象图管理
CoreData 管理我的对象,包括更改跟踪以及检查我在方案中定义的约束。此外,它还支持通过对象故障等减少内存使用的机制。
我认为Hibernate也是如此。它跟踪在 xml 中或通过注释定义的约束,并支持减少内存使用的机制,如 coredata(延迟加载等)
持久性
CoreDate 使用底层数据库 sqlite 作为持久性存储,但也可以在内存中使用。
例如,Hibernate 使用 MySQL 数据库作为持久性存储,但可以使用内存中的存储,如 coredata (hsqldb-mem)
因此,由于我不是 hibernate 的专业人士,所以我很困惑——你能说两者之间的关键概念差异是它们真的很像吗?