Nhibernate在实际项目中的使用
2010-06-03 17:04
239 查看
之所以用Nhibernate是因为这个项目最终所用的数据库不确定,可能是sql server也可能是mysql还可能是orancle。而Nhibernate最大的特点就是最后不管使用什么数据库只需要在“方言”(相当于配置文件)中稍微一改就可以了,因为他是数据库访问层,在数据库之上的。
参考的是李永京的“我的Nhibernate之旅”,写的比较详细。而本文的重点是在实际开发中所遇到的问题以及需要注意的问题。
文档地址:/article/6948025.html
首先,我先介绍一下我在项目中使用Nhibernate的大体流程。
1。当然是创建经典的三层。
2。编写持久化类和映射文件。
3。利用SchemaExport工具,按照持久化类和映射文件自动生成数据库架构(即在数据库中自动生成各种表和表关系)。
4。编写数据访问层和前台的web页面。
下面再说说我在这个项目中遇到的问题。
1。HQL
在Nhibernate中查询推荐用它的专用查询语言“HQL”,语法和linql差不多,如果实在用不习惯也可以用“原生sql”。但是用HQL只能“select”即查询,如果你想要update、delete、insert等操作那就不行了。
2。Insert, Update, Delete操作
Insert;调用ISession.Save();
Update;调用ISession.Delete();
Delete;改变它的一些属性;调用ISession.Update();
并且这些操作要求ISession使用事务
3。NHibernate中映射关系
NHibernate中映射关系是NHibernate中的亮点,也是最难掌握的技术。原文作者对这一部分讲解的不多,特别是多对多关系。而我的项目中表之间的关系比较复杂,导致我卡了挺长的时间才解决。
在映射文件中不同映射关系
在持久化类中对应如下
4。在网站页面中应用Nhibernate
这部分原文没有涉及到,并且网上的例子也不是很多。
首先需要配置web.config,把配置信息加进去。
画红线部分就是使用的何种数据库,如果数据库变了,这部分修改即可。
然后把需要用到的.dll文件添加到bin目录中。
5.在web表现层中的.cs文件中使用Nhibernate
首先引用命名空间
然后使用BLL层中的方法就可以了,需要注意的是“级联操作”是一个比较难的地方。
参考的是李永京的“我的Nhibernate之旅”,写的比较详细。而本文的重点是在实际开发中所遇到的问题以及需要注意的问题。
文档地址:/article/6948025.html
首先,我先介绍一下我在项目中使用Nhibernate的大体流程。
1。当然是创建经典的三层。
2。编写持久化类和映射文件。
3。利用SchemaExport工具,按照持久化类和映射文件自动生成数据库架构(即在数据库中自动生成各种表和表关系)。
4。编写数据访问层和前台的web页面。
下面再说说我在这个项目中遇到的问题。
1。HQL
在Nhibernate中查询推荐用它的专用查询语言“HQL”,语法和linql差不多,如果实在用不习惯也可以用“原生sql”。但是用HQL只能“select”即查询,如果你想要update、delete、insert等操作那就不行了。
2。Insert, Update, Delete操作
Insert;调用ISession.Save();
Update;调用ISession.Delete();
Delete;改变它的一些属性;调用ISession.Update();
并且这些操作要求ISession使用事务
3。NHibernate中映射关系
NHibernate中映射关系是NHibernate中的亮点,也是最难掌握的技术。原文作者对这一部分讲解的不多,特别是多对多关系。而我的项目中表之间的关系比较复杂,导致我卡了挺长的时间才解决。
在映射文件中不同映射关系
在持久化类中对应如下
4。在网站页面中应用Nhibernate
这部分原文没有涉及到,并且网上的例子也不是很多。
首先需要配置web.config,把配置信息加进去。
画红线部分就是使用的何种数据库,如果数据库变了,这部分修改即可。
然后把需要用到的.dll文件添加到bin目录中。
5.在web表现层中的.cs文件中使用Nhibernate
首先引用命名空间
然后使用BLL层中的方法就可以了,需要注意的是“级联操作”是一个比较难的地方。
相关文章推荐
- Nhibernate在实际项目中的使用
- NO.2 Mybatis 实际项目的使用
- [项目过程中所遇到的各种问题记录]ORM篇——使用NHibernate配置对象实体的一些小问题
- [项目过程中所遇到的各种问题记录]ORM篇——使用NHibernate配置对象实体的一些小问题
- 最近开发一个项目使用了Nhibernate出现了如下问题deleted object would be re-saved by cascade (remove deleted object from
- 项目中实际使用的日志配置log4j2 + slf4j
- Map String数组的使用(业务逻辑)---实际项目中的问题
- log4j 日志服务器_项目实际使用日记
- boost在实际项目中的使用
- 如何使用SSH框架开发实际项目-开发规范
- [设计模式]_[中级]_[观察者模式在项目中实际使用例子]
- Nodejs, MemCacheD 在实际项目中的使用
- NHibernate在实际项目中的应用
- 实际项目中使用Postsharp
- 使用struts2实现数据库数据导出成word文档(项目当中实际用的)
- (7)java5线程并发库的应用(线程池) 以及在实际项目中的使用。。
- 使用 TestNG 的新特性管理实际项目中的大量单元测试
- Java基本数据类型、引用类对比及实际项目高级应用 使用==与equal的机制与不同
- [转帖]实际项目中可使用的性能需求
- 实际项目开发中需要的格式化标签以及JSTL标签库介绍【1核心标签(用得最多)2 国际化标签(I18N格式化标签) 数据库标签(SQL标签,很少使用) XML标签(几乎不用) JSTL函数(EL函数)】