您的位置:首页 > 其它

Nhibernate基础练习

2008-06-27 23:02 176 查看
NHibernate是一个基于.Net,用于关系数据库的对象持久化类库.由JAVA平台的Hibernate迁移到.NET平台。

NHibernate用于把你的.Net对象持久化到底层的关系数据库中.你不用自己编写Sql语句去操作这些对象,NHibernate会代替你做.你的代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确的东西.

创建一个WEB 应用程序Test!

1:配置

在<configSections>元素里定义了hibernate-configuration配置节。在<hibernate-configuration>节里面,我们告诉NHibernate使用MS SQL2005的数据库,并指明了数据库链接字符串。

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<!-- Add this element -->

<configSections>

<section

name="hibernate-configuration"

type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"

/>

</configSections>

<!-- Add this element -->

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">

<session-factory>

<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>

<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>

<property name="connection.connection_string">Server=TLSZ207\SQLEXPRESS;initial catalog=Test;Integrated Security=true</property>

</session-factory>

</hibernate-configuration>

<!-- Leave the system.web section unchanged -->

<system.web>

</system.web>

</configuration>
hibernate.dialect

NHibernate方言(Dialect)的类名 - 可以让NHibernate使用某些特定的数据库平台的特性.

hibernate.connection.provider_class

定制IConnectionProvider的类型.

hibernate.connection.connection_string

用来获得连接的连接字符串.

2:创建数据表

1use Test

2GO

3CREATE TABLE User (

4 LogonID varchar(20) NOT NULL default '0',

5 UserName varchar(40) default NULL,

6 Password varchar(20) default NULL,

7)

8GO

3:创建与数据库表映射的实体类

namespace Test

这完全是一个普通的poco类(Plain Old CLR Object),仅仅是对数据库User表的一个完全映射,不依赖于任何框架,可以用来作为持久化类,你可以在任何地方使用而不用担心依赖于某些神秘的运行时东西。

4:创建映射文件

NHibernate需要知道怎样去加载(load)和存储(store)持久化类的对象。这正是NHibernate映射文件发挥作用的地方。映射文件告诉NHibernate它应该访问数据库(database)里面的哪个表(table)及应该使用表里面的哪些字段(column)

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

<class name="User" table="User">

<id name="LogonID" column="LogonId" type="String(20)">

<generator class="assigned" />

</id>

<property name="UserName" column="UserName" type="String(40)"/>

<property name="Password" type="String(20)"/>

</class>

</hibernate-mapping>
class我们指明了User类映射到数据库表User,id标记指明该属性对应数据库表的主键字段。

这些嵌入的Generator标记告诉NH怎样生成Primary Key.在我们举的例子中,把它设置成"assigned",意思是"我们的对象将自己生成key"。

property节点的name属性指明我们实体类的属性,column指明与该属性对应的数据库表的字段。

5:代码

protected void Save()

{

NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration()

.SetDefaultAssembly(typeof(User).Assembly.FullName)

.SetDefaultNamespace(typeof(User).Namespace)

.AddDirectory(new System.IO.DirectoryInfo(System.Web.Hosting.HostingEnvironment.MapPath("~")));//Configuration对象知道所有在.Net类和后端数据库之间的映射关系

ISessionFactory fac = cfg.BuildSessionFactory();

ISession session = fac.OpenSession();

ITransaction tr = session.BeginTransaction();

User newUser = new User();

newUser.LogonID = "1";

newUser.UserName = "ZAKS";

newUser.PassWord = "abc123";

session.Save(newUser);

tr.Commit();

session.Close();

fac.Close();

}
常用的方法:

1. 获取记录

User user = (User)session.Get(typeof(User),1);

或者

User user = (User)session.Load(typeof(User),1);

2. 保存记录

session.Save(user);

3. 删除记录

User user = (User)session.Get(typeof(User),1);

session.Delet(User);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: