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);
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);
相关文章推荐
- 基础练习——闰年判断
- 蓝桥杯练习系统:基础练习 完美的代价
- 野生前端的数据结构基础练习(2)——队列
- 蓝桥杯 BASIC-26 基础练习 报时助手
- 蓝桥杯 【基础练习】 十进制转十六进制
- JS基础循环语句练习
- 基础练习 回文数
- 编程基础_ArrayList的练习
- 【基础练习】【区间DP】codevs2102 石子归并2(环形)题解
- 蓝桥杯--基础练习:数列排序
- classmethod类方法 分类: python 小练习 python基础学习 2014-02-07 10:36 214人阅读 评论(0) 收藏
- (蓝桥杯)基础练习 2n皇后问题
- 基础练习 字符串的对比
- (蓝桥杯)基础练习 完美的代价
- Linux基础练习_多线程
- 蓝桥杯 基础练习 十六进制转十进制
- 基础练习 高精度加法
- 蓝桥杯 基础练习 十六进制转八进制 【字符串处理】
- Java基础编程小练习——日历
- 基础练习 数列特征