休眠数据库优先

Posted

技术标签:

【中文标题】休眠数据库优先【英文标题】:Nhibernate Database First 【发布时间】:2016-08-02 10:36:02 【问题描述】:

一开始我会告诉你,我对 Nhibernate 完全陌生,但我想知道如何将 Nhibernate 用于已经制作的数据库。数据库本身相当大(我在 CPU 上用来测试的部分是 1gb)。我不是通过 xml 映射的忠实粉丝。我认为这个工具可能对我有帮助 (https://www.devart.com/entitydeveloper/),但它的性能并不令人满意。那么我是否应该使用代码,然后将其与 XML 进行映射,或者我可以使用哪些其他可能的方式?

【问题讨论】:

【参考方案1】:

我知道有两种选择:

Fluent NHibernate:流畅、无 XML、编译安全、自动化、基于约定的 NHibernate 映射 NHibernate.Mapping.Attributes:使用 NHibernate.Mapping.Attributes,您可以使用 .NET 属性来装饰您的实体,这些属性将用于生成映射信息

【讨论】:

除了以上两个插件之外,NHibernate 还内置了对“Mapping-By-Code”的支持。不需要 XML。 我通过代码进行第二次映射。它与 xml 一样灵活,但意味着更快,因为在会话工厂启动时没有要解析的 xml 映射。如果我没记错的话,Fluent under the cover 会动态创建 xml,所以 sessionfactory 启动不会那么快。这里还有一个很好的通过代码和流利的映射资源notherdev.blogspot.com/2012/02/…【参考方案2】:

除非您对NHibernate 有要求,否则我强烈推荐Dapper,尤其是在您关心性能的情况下。对于CRUD,您可以查看Dapper Contrib or Dapper Rainbow

Dapper Rainbow vs Dapper Contrib

Introduction to Dapper

【讨论】:

Dapper ContribDapper Rainbow 可以从现有数据库生成模型吗? Dapper 可能会更好,也可能不会——这实际上是基于意见的讨论,而不是 *** 问题的问题。但无论哪种方式,这个问题都是关于 NHibernate 的,所以这不是一个答案。

以上是关于休眠数据库优先的主要内容,如果未能解决你的问题,请参考以下文章

Java 多线程优先级休眠(未完待续...)

实现低优先级后台线程的模式?

使用多个数据库休眠

使用休眠时数据库连接过多

数据库休眠并导致异常

从休眠实体生成数据库