您可以请与NHibernate架构生成分享您的经验吗?在数据模型的复杂性和大小方面它有多大的可扩展性?与手工制作的数据模型相比,它是否有任何重大的性能影响?NHibernate架构生成
回答
我发现它对于开发非常有用,当你可以使用它的一些代码来随时重建和重新填充测试数据库。迈克尔关于迁移的观点与我们的经验相符 - 一旦你完成了最初的发布,你需要决定改变生产数据库的另一种方法。我们已经使用了NH模式生成和约30种常见类型的模型(包括每个子类排列的表),并且它生成的定义是正确的,所以对模式的大小没有明显的限制它可以处理。
我现在倾向于认为自动生成的模式几乎总是比手工生成的模式更好的起点,因为软件会为您提供完全一致的东西,并且完全符合您的具体要求。熟练的DBA可以进行的优化类型在您需要调整大量特定的工作负载之前不可能是必需的或有用的。
您正在比较苹果和梨。手工制作的模型将始终(完好应)执行任何ORM技术。
我个人认为NHibernate性能很好,几乎可以将任何OO模型映射到关系模型,这就是它的优点。有几个疑难杂症就像知道应用程序启动时间,并确保您正确使用会话管理。
我会推荐NHibernate,并且已经使用它18个月,现在在大约80桌左右的模式上,还没有看到任何重大问题。
我会说没有任何性能影响。实际上,没有很多选择如何创建表以适应映射文件。还有一些额外的功能仅用于模式创建,例如指定数据库数据类型,创建约束和索引以及创建模式时运行任意sql的可能性。
性能调整通常可以在自动创建模式后完成。例如,您让NH创建表并运行一些Alter Table
语句来设置一些与性能相关的设置。之后创建(或替换)索引也很容易。所有这些甚至可以写入映射文件。 NH的工作仍然由NH完成:根据已经存在的信息创建所有表和列:映射文件。
如果您需要导出模式并填充数据库,您希望看到Fluent NHibernate模式工具。它能够读取你的程序集,hibernate.cfg.xml,* .hbm.xml和Fluent Mappings。您可以生成/执行数据库的DDL(创建/更新/删除表),并接受类似CSV的输入文件用于填充创建/更新的数据库(数据集文件接受在HQL中完成的小型查询) 。这个工具对于使用NHibernate的单元测试和Web应用程序非常有用。
- 1. nhibernate架构
- 2. NHibernate架构?
- 3. 实现NHibernate的单元测试生成与VB.NET/MBUnit架构
- 4. 流利nhibernate功能不正确生成架构
- 5. XML架构生成的C#
- 6. NHibernate生成器
- 7. Asp.net MVC 3和NHibernate架构
- 8. NHibernate,WCF,WPF架构问题
- 9. NHibernate定义架构名称
- 10. 使用nHibernate创建架构
- 11. 功能NHibernate架构问题
- 12. C#NHibernate的mulitier架构
- 13. NHibernate代码生成
- 14. 如何使用NHibernate架构生成来更新数据库表格模式?
- 15. 台风生成架构错误
- 16. Django的OData架构生成器(CSDL)
- 17. 从存储过程生成架构
- 18. Maven + Hibernate注释架构生成
- 19. 的Sparx企业架构师 - XSD生成:在生成一个
- 20. 集成架构
- 21. 使用NHibernate生成复杂报表框架
- 22. NHibernate和生成的GUI
- 23. NHibernate seqhilo如何生成ID?
- 24. nhibernate代理生成器
- 25. NHibernate的错误SQL生成
- 26. ActiveWriter和NHibernate:不能生成
- 27. 在线生成的架构定义在使用负载表API时,BigQuery不接受架构生成器
- 28. Xcodebuild没有生成x86_64架构的动态框架
- 29. 在洋葱架构管理NHibernate会话
- 30. 部署后处理nHibernate/Fluent nHibernate中的架构更新
您是否正在专门讨论从类定义生成数据库模式?与手动构建数据库模式以匹配类定义?如果是这样的话,这可能是一个80%的解决方案,非常接近您第一次发布所需的内容。在第一次产品发布后,您必须考虑模式生成实际上不会执行的迁移。 – 2011-01-21 11:27:06
是的Michale,我指的是从类定义生成数据库模式。很高兴知道它非常接近版本1的需求,我认为这将节省大量时间。谢谢。 – patelsan 2011-01-21 15:06:40