牵一发动全身【Nhibernate基本映射】
用牵一发动全身来形容Nhibernate的映射,一点都不夸张。小小的属性的改动,决定了整个Nhibernate的运行动态。下面让我们来具体了解一下,通过回顾我们在上篇文章中用到的配置文件,做一个对xml映射文件的理解补充:
实体类的映射文件:
一个实体类对应的是数据库中的一张表;类中的一个属性对应表中的一个字段;操作一个对象对应操作的的是表中的一条记录。
<?xmlversion="1.0" encoding="utf-8" ?> <hibernate-mappingxmlns="urn:nhibernate-mapping-2.2" namespace="Model"assembly="Model"> <class name="Dog"table="Dog"> <id name="Id"> <column name="DogId"sql-type="char(32)" /> <generator class="assigned"/> </id> <property name="Name"> <column name="Name"length="16" /> </property> <property name="Sex" /> <property name="Weight" /> </class> </hibernate-mapping>
<class></class>标签是定义一个持久化类的。
"class name="Dog"" 持久化类的类名,这里可以是类的全名。
table="Dog" 对应的数据库表名。
<id><id>标签定义了该属性到数据库表主键字段的映射。
property name="Id" 标识属性的名字。
sql-type="char(32)" NHibernate类型的名字
column name="DogId" 主键字段的名字。
<property></property>标签是类定义了一个持久化类的属性。
name="propertyName" 属性名
column="column_name" 对应的数据库字段名。
type="typename" NHibernate类型的名字。
Nhibernate运作方式的配置文件,主要是配置session工厂:
<strong><</strong>?xmlversion="1.0" encoding="utf-8" ?> <hibernate-configurationxmlns="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=(local);uid=sa;pwd=123456;database=quickstart //将该属性的填写改成你自己的数据库连接符 </property> <property name="hbm2ddl.auto">update</property> <mapping assembly="Model"/> </session-factory> </hibernate-configuration>
<property name="dialect"> 配置 数据库方言 ,针对不同的数据有不同配置,当前配置的是Sqlsever的方言
<property name="connection.provider"> 配置 连接池
<property name="connection.connection_string"> 属性值大家看着肯定熟悉,对,是配置连接数据库的字符串
<property name="hbm2ddl.auto"> 该属性的配置,决定Nhibernate的运行,是否会自动生成数据库表
<mapping assembly="Model"/> 这里的属性 配置 要加载的实体类的配置文件所在的程序集
每个属性的值,都还有很多的不同配置,自己可通过查阅API手册,详细地去学习,这里只做简单的分享。
总结:配置文件给我们的程序带来了很大的好处,从抽象工厂,到Nhibernate无处不彰显着它给程序带来的灵活性。配置文件,一定会大行其道吧!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。