zoukankan      html  css  js  c++  java
  • NHibernate学习

    1、首先要准备几个dll文件 NHibernate.dll,Iesi.Collections.dll,Antlr3.Runtime.dll

    2、NHibernate 有3中框架

    分别为:Castle框架、LinFu框架、Spring.Net框架。
    我们只要选择一种,在配置文件中配置proxyfactory.factory_class节点。

    如果使用Castle.DynamicProxy2动态代理,引用NHibernate.ByteCode.Castle.dll程序集并配置proxyfactory.factory_class节点为
    <property name="proxyfactory.factory_class"> NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle</property>

    如果使用LinFu.DynamicProxy动态代理,引用NHibernate.ByteCode.LinFu.dll程序集并配置
    proxyfactory.factory_class节点为<property name="proxyfactory.factory_class"> NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu</property>

    如果使用Spring.Aop动态代理,引用NHibernate.ByteCode.Spring.dll程序集并配置
    proxyfactory.factory_class节点为<property name="proxyfactory.factory_class"> NHibernate.ByteCode.Spring.ProxyFactoryFactory,NHibernate.ByteCode.Spring</property>

    2、NHibernate程序组成
    a) 建好数据表 叫做要持久化的表

    b) 建一个类,设置好与上面实体表对应的所有属性,叫做被持久化的类

    c) 再建一个xml映射文件,其实就是配置的作用,就是告诉NHIbernate,我需要哪个类和哪个表做相互映射做数据交流,而且取名为**.bhm.xml,对应实体表对应的被持久化类(上面的),放在上面所在的类库目录下,这样Nhibernate会自己去找到

    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    assembly="NHibernateSample.Domain"
    namespace="NHibernateSample.Domain.Entities">

    <class name ="Customer">
    <id name="Id" column ="CustomerId">
    <generator class ="native"/>
    </id>
    <property name ="FirstName"/>
    <property name ="LastName"/>
    </class>
    </hibernate-mapping>

    说明: <class name ="Customer"> 数据库中的表名
    <id name="Id" column ="CustomerId">
    <generator class ="native"/>
    </id>
    name="Id" 表示上面持久化类中定义的属性
    column ="CustomerId" 表示数据库中的字段为"CustomerId"
    <generator class ="native"/> native表示为主键

    注意:XML文件的默认生成操作为“内容”,这里需要修改为“嵌入的资源”生成,因为NHibernate是通过查找程序集中的资源文件映射实体

    d)再建一个NHibernate与数据库连接的配置文件,nhibernate.cfg.xml,告诉NHibernate连哪个数据库,其中包括设置一些参数
    <?xml version='1.0' encoding='utf-8'?>
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
    <!-- properties -->
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="default_schema">dbo</property>
    <property name="connection.connection_string">Server=.;initial catalog=test;user id=sa;password=mm#it-116</property>
    <property name="show_sql">false</property>
    <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
    <property name="use_outer_join">true</property>
    <property name="proxyfactory.factory_class"> NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle</property>
    <!-- mapping files -->
    <mapping assembly="ClassLibrary1" />
    </session-factory>
    </hibernate-configuration>
    e) 建一个建立返回Nhibernate实例的类NHibernateHelper
    public class NHibernateHelper
    {
    private ISessionFactory _sessionFactory;
    public NHibernateHelper()
    {
    _sessionFactory = GetSessionFactory();
    }
    private ISessionFactory GetSessionFactory()
    {
    return (new Configuration()).Configure().BuildSessionFactory();
    }
    public ISession GetSession()
    {
    return _sessionFactory.OpenSession();
    }
    }

    f) 需要从ISessionFactory中获取一个ISession(NHibernate的工作单元)。ISessionFactory可以创建并打开新的Session,调用这些类和方法

  • 相关阅读:
    开源微信管家平台——JeeWx 捷微4.0 微服务版本发布,全新架构,全新UI,提供强大的图文编辑器
    JeeWx全新版本发布!捷微二代微信活动平台1.0发布!活动插件持续开源更新!
    JEECG 3.7.8 新版表单校验提示风格使用&升级方法(validform 新风格漂亮,布局简单)
    Java快速开发平台——JEECG 3.7.8 版本发布!我们的目标是有鱼丸也有粗面
    企业如何快速搭建小程序官网
    如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联
    deepClone deepCompare
    fiddler
    spy-debugger
    队列
  • 原文地址:https://www.cnblogs.com/JohnnyBao/p/4441684.html
Copyright © 2011-2022 走看看