zoukankan      html  css  js  c++  java
  • MySql(二)_NHibernateHelper管理会话工厂

    1.定义接口的好处:

     (1) 清楚的看到里面有哪些方法;

     ( 2 )  可以更换实现类;Nhibernate实现件可以更换;

    Manger文件夹(另外两个是Model、Mappings文件夹)

    首先Model文件内,(对象)类名,对应着数据库中的表名;在类中定义属性(即对应表中的列名)

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace NBOWeb.Model
     8 {
     9     class Unity
    10     {
    11         public virtual int Id { get; set; }
    12 
    13         public virtual string Name { get; set; }
    14 
    15         public virtual int Age { get; set; }
    16 
    17         public virtual int WorkAge { get; set; }
    18 
    19     }
    20 }

    在Mappings文件夹内,存放的是Model中所建立的类(对应的是数据库中的表)的配置文件,将所有的类中的属性与数据库中的表中的列名真正对应起来。注意Model中的类名与Mapping中的解析文件名一一对应。 “unity.cs”与表名一致,“unity.cs”与“unity.hbm.xml”一致。

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
     3                    assembly="NBOWeb"
     4                    namespace="NBOWeb.Model">
     5   <!--assembly= Sikiedu 这是程序集的名称  namespace 是指User在哪个命名空间下的   -->
     6 
     7   <class name="Unity" table="unity">
     8     <id name="Id" column="id" type="Int32">
     9       <generator class="native"></generator>
    10       <!--自动增涨-->
    11       <!--nativ 是本地 使用数据库自带的生成器-->
    12     </id>
    13     <property name="Name" column ="name" type="String" ></property>
    14     <property name="Age" column ="age" type="Int32" ></property>
    15     <property name="WorkAge" column ="workage" type="Int32" ></property>
    16 
    17   </class>
    18 
    19 </hibernate-mapping>

    Manager文件夹中,存放的是接口与接口的实现,“IUnityManger.cs”和“UnityManager.cs”           "IUnityManager.cs"存放的是各种要实现的方法或功能; “UnityManager”存放的是这些方法怎么具体实现的。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using NBOWeb.Model;
     7 
     8 namespace NBOWeb.Manger
     9 {
    10     interface IUnityManager
    11     {
    12         void Add(Unity unity);
    13         void Update(Unity unity);
    14         void Remove(Unity unity);
    15         Unity GetById(int id);
    16         Unity GetByName(string name);                 //先定义出来有哪些操作
    17 
    18         ICollection<Unity> GetAllUnityCollection();
    19 
    20         bool VerifyUnity(string name, int age);
    21     }
    22 }
      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 using System.Xml;
      7 using NBOWeb.Model;
      8 using NHibernate;
      9 using NHibernate.Criterion;
     10 
     11 namespace NBOWeb.Manger
     12 {
     13     class UnityManger : IUnityManager
     14     {
     15         
     16 
     17         public void Add(Unity unity)
     18         {
     19             //ISession session = NHibernateHelper.OpenSession();
     20             //session.Save(unity);
     21             //session.Close();
     22 
     23 
     24 
     25             //ISession session = NHibernateHelper.OpenSession()                     //当使用OpenSession方法的时候,将SessionFactory属性  中字段可读get创建           “属性”的加强
     26             using (ISession session = NHibernateHelper.OpenSession()) //需要释放的资源   using的用法
     27             {
     28                 using (ITransaction transaction = session.BeginTransaction())
     29                 {
     30                     session.Save(unity);
     31                     transaction.Commit();
     32                 }
     33             } //自动实现资源的释放    
     34         }
     35 
     36         public ICollection<Unity> GetAllUnityCollection()
     37         {
     38             using (ISession session = NHibernateHelper.OpenSession()) //需要释放的资源   using的用法
     39             {
     40                 //ICriteria criteria = session.CreateCriteria(typeof(Unity));                      // criteria标准
     41                 //criteria.Add(Restrictions.Eq("Name",name));                                      //更新,根据主键来操作  Restrictions限制约束,严格相等
     42                 //                                                                                 //将查询条件封装成了对象
     43                 //Unity unity = criteria.UniqueResult<Unity>();                                    //调用唯一的结果,  //只会取到查询结果的第一行记录
     44 
     45                 IList<Unity> unity = session.CreateCriteria(typeof(Unity)).List<Unity>();
     46                 return unity;
     47             }
     48         }
     49 
     50         public Unity GetById(int id)
     51         {
     52             using (ISession session = NHibernateHelper.OpenSession()) //需要释放的资源   using的用法
     53             {
     54                 using (ITransaction transaction = session.BeginTransaction())
     55                 {
     56                     Unity unity = session.Get<Unity>(id); //更新,根据主键来操作
     57                     transaction.Commit();
     58                     return unity;
     59                 }
     60             }
     61         }
     62 
     63         public Unity GetByName(string name)
     64         {
     65             using (ISession session = NHibernateHelper.OpenSession()) //需要释放的资源   using的用法
     66             {
     67                 //ICriteria criteria = session.CreateCriteria(typeof(Unity));                      // criteria标准
     68                 //criteria.Add(Restrictions.Eq("Name",name));                                      //更新,根据主键来操作  Restrictions限制约束,严格相等
     69                 //                                                                                 //将查询条件封装成了对象
     70                 //Unity unity = criteria.UniqueResult<Unity>();                                    //调用唯一的结果
     71 
     72                 Unity unity = session.CreateCriteria(typeof(Unity)).Add(Restrictions.Eq("Name", name))
     73                     .UniqueResult<Unity>();
     74                 return unity;
     75             }
     76         }
     77 
     78         public void Remove(Unity unity)
     79         {
     80             using (ISession session = NHibernateHelper.OpenSession()) //需要释放的资源   using的用法
     81             {
     82                 using (ITransaction transaction = session.BeginTransaction())
     83                 {
     84                     session.Delete(unity); //更新,根据主键来操作
     85                     transaction.Commit();
     86                 }
     87             }
     88         }
     89 
     90         public void Update(Unity unity)
     91         {
     92             using (ISession session = NHibernateHelper.OpenSession()) //需要释放的资源   using的用法
     93             {
     94                 using (ITransaction transaction = session.BeginTransaction())
     95                 {
     96                     session.Update(unity); //更新,根据主键来操作
     97                     transaction.Commit();
     98                 }
     99             }
    100         }
    101 
    102         public bool VerifyUnity(string name, int age)
    103         {
    104             using (ISession session = NHibernateHelper.OpenSession()) //需要释放的资源   using的用法
    105             {
    106          
    107                 Unity unity = session
    108                     .CreateCriteria(typeof(Unity))                                     //建立unity标准格式
    109                     .Add(Restrictions.Eq("Name", name))                                //添加条件约束
    110                     .Add(Restrictions.Eq("Age", age))
    111                     .UniqueResult<Unity>();                                           //主键            加深对“主键”的理解
    112                 if (unity==null)
    113                 {
    114                     return false;
    115                 }
    116                 else
    117                 {
    118                     return true;
    119                 }
    120               
    121             }
    122         }
    123     }
    124 }

    NHibernateHelper.cs

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using NHibernate;
     7 using NHibernate.Cfg;
     8 
     9 namespace NBOWeb
    10 {
    11     class NHibernateHelper
    12     {
    13  
    14             private static ISessionFactory _sessionFactory;
    15 
    16         private static ISessionFactory SessionFactory
    17         {
    18             get
    19             {
    20                 if (_sessionFactory==null)
    21                 {
    22                     var configuration=new Configuration();
    23                     configuration.Configure();
    24                     configuration.AddAssembly("NBOWeb");
    25 
    26                     _sessionFactory = configuration.BuildSessionFactory();
    27                 }
    28                 return _sessionFactory;
    29             }
    30         }
    31              
    32         public static ISession OpenSession()
    33         {
    34             return SessionFactory.OpenSession();
    35         }
    36 
    37     }
    38 }

    接口,具体在进行学习。

    总的运行

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Diagnostics;
      4 using System.Linq;
      5 using System.Text;
      6 using System.Threading.Tasks;
      7 using NHibernate;
      8 using NHibernate.Cfg;
      9 using NBOWeb.Model;
     10 using NBOWeb.Manger;
     11 
     12 namespace MySql_StudyTest
     13 {
     14     class Program
     15     {
     16         static void Main(string[] args)
     17         {
     18             //var configuration=new Configuration();                        
     19             //configuration.Configure();             
     20             //configuration.AddAssembly("NBOWeb");
     21             //ISessionFactory sessionFactory = null;
     22             //ITransaction transaction = null;
     23             //ISession session = null;
     24             //try
     25             //{
     26             //    sessionFactory = configuration.BuildSessionFactory();
     27             //    session = sessionFactory.OpenSession();
     28 
     29             //    //Unity unity = new Unity() {Name = "L.Juhnko", Age = 29, WorkAge = 10  };
     30             //    //session.Save(unity);
     31 
     32             //    //事务,对数据库更改 
     33             //    transaction= session.BeginTransaction();//开启事务
     34             //    Unity unity1 = new Unity() { Name = "ko01", Age = 29, WorkAge = 10 };
     35             //    Unity unity2 = new Unity() { Name = "ko02", Age = 29, WorkAge = 10 };
     36 
     37             //    session.Save(unity1);
     38             //    session.Save(unity2);
     39             //    transaction.Commit();//事务提交
     40             //}
     41             //catch (Exception e)
     42             //{
     43             //    Console.WriteLine(e);
     44 
     45             //}
     46             //finally
     47 
     48             //{
     49             //    if (transaction!=null)
     50             //    {
     51             //        transaction.Dispose();
     52             //    }
     53 
     54             //    if (session!=null)
     55             //    {
     56             //        session.Close();
     57             //    }
     58             //    if (sessionFactory!=null)
     59             //    {
     60             //        sessionFactory.Close();
     61             //    }
     62             //}
     63 
     64             //Unity unity=new Unity()  { Id=0};        //创建一个Unity的对象
     65             //IUnityManager unityManager=new UnityManger();        //接口的应用            “接口” //此时与数据库未发生链接
     66             ////unityManager.Add(unity);
     67 
     68             ////unityManager.Update(unity);
     69             //unityManager.Remove(unity);
     70 
     71             //IUnityManager unityManager = new UnityManger();
     72             //Unity unity = unityManager.GetById(23);
     73 
     74             //Console.WriteLine("");
     75             //Console.WriteLine(unity.Id);
     76             //Console.WriteLine(unity.Name);   
     77             //Console.WriteLine(unity.Age);         
     78             //Console.WriteLine(unity.WorkAge);
     79             //Console.ReadKey();
     80 
     81 
     82 
     83 
     84 
     85             //IUnityManager unityManager=new UnityManger();
     86             //Unity unity = unityManager.GetByName("juhnko");
     87 
     88             //Console.WriteLine("");
     89             //Console.WriteLine(unity.Id);
     90             //Console.WriteLine(unity.Name);
     91             //Console.WriteLine(unity.Age);
     92             //Console.WriteLine(unity.WorkAge);
     93             //Console.ReadKey();
     94 
     95 
     96 
     97 
     98 
     99 
    100 
    101             //IUnityManager unityManager = new UnityManger();
    102             //ICollection<Unity> unity= unityManager.GetAllUnityCollection();
    103             //foreach (var u in unity)
    104             //{
    105             //    Console.WriteLine("用户名:{0}" + "	" + "Id:{1}" + "	" + "年龄:{2}" + "	" + "工作年龄:{3}"+ "
    ", u.Name, u.Id, u.Age, u.WorkAge);      
    106             //}
    107             //Console.ReadKey();
    108 
    109 
    110 
    111             IUnityManager unityManager = new UnityManger();
    112             Console.WriteLine(unityManager.VerifyUnity("juhnko",30));
    113 
    114             Console.ReadKey();
    115 
    116         }
    117     }
    118 }
  • 相关阅读:
    Java中四种XML解析技术
    Android ui utils简单实用的Android界面工具
    Android SAX解析xml文件
    Android SAX解析XML
    《Unix & Linux 大学教程》 第一、二章 学习笔记
    Eclipse设置背景色
    Java中getResourceAsStream的用法
    Android中asset文件夹和raw文件夹区别
    《Unix & Linux 大学教程》 第三、四章 学习笔记
    Android SAX解析实例教程
  • 原文地址:https://www.cnblogs.com/NBOWeb/p/10060051.html
Copyright © 2011-2022 走看看