Spring.NET 整合Nhibernate
2014-01-24 16:34
281 查看
因为最近无意中学了AOP ,所以想一探究竟,看看.net里这个Spring.Net 到底是怎么回事,请有需要的童鞋往下,不需要的请alt+w。因为是先配置的 Nhibernate 所以就从这个开始。开发环境:VS2012
1. 下载Nhibernate 我这里用的是 NHibernate-3.3.2.GA-bin
2. 添加映射文件 *.hbm.xml 当然 你可以使用映射或者其他一些方式 不过这个比较常用 需要注意的地方有如下几点:
1.这个映射文件需要在属性中设置为 嵌入的资源,如果丢了这一步 可能会异常。
2. 在映射文件里, 程序集以及命名空间很重要。
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="TestNHISpringIntegral.Core" namespace="TestNHISpringIntegral.Core.Model">
这个对应的是model的。
3. 列名一定要对应上,主键外键这些的设置也要注意,在这里就不再赘述。 例子如下:
3.添加 NHibernate 配置文件 从配置模板里复制出对应的配置文件,我这里是sql2005,请童鞋参照自己的数据库进行设置,注意 将此文件放到bin里面,这样方便读取,还要在app.config 或者web.config 里设置下section,因为顺序是先单独配置,然后进行整合所以可能在后续的内容里会重新设置,请童鞋注意。section 必须是放在最前面 否则依然会报错
1.在app.config 或者web.config里添加如下内容:
2.修改数据库相关配置:
上面注释掉的内容都是在配置完成之后正式使用的时候才需要的内容,所以我这里全部注释掉了。
4.到这里 NHibernate 就配置完成了,童鞋们可以写代码自己测试下 我的代码如下:
页面上如下:
忘记说明一点 因为这个NHibernate 依赖其他程序集 请一并进行引用。到这里NHibernate 配置就完成了,下面是spring.net 的配置
5. 引用spring.net 相关程序集,因为我这里是使用的web测试的 所以将一些文件都分开了,我的文件目录如图:
View Code
里面的程序集
对应的是前面添加的配置文件,请配置正确,否则也会报错跑不起来,这里因为我忘记具体的错误了,所以只是提醒大家注意这里,这样整个就贯穿起来了。
页面代码:
到此全部完成,至于MVC 只是调用所以就没写上来,大家自己去整合,如果有问题请留言大家一起探讨,不喜勿喷。
1. 下载Nhibernate 我这里用的是 NHibernate-3.3.2.GA-bin
2. 添加映射文件 *.hbm.xml 当然 你可以使用映射或者其他一些方式 不过这个比较常用 需要注意的地方有如下几点:
1.这个映射文件需要在属性中设置为 嵌入的资源,如果丢了这一步 可能会异常。
2. 在映射文件里, 程序集以及命名空间很重要。
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="TestNHISpringIntegral.Core" namespace="TestNHISpringIntegral.Core.Model">
这个对应的是model的。
3. 列名一定要对应上,主键外键这些的设置也要注意,在这里就不再赘述。 例子如下:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="TestNHISpringIntegral.Core" namespace="TestNHISpringIntegral.Core.Model"> <class name="Author" table="Authors" lazy="false" > <cache usage="read-write"/> <id name="Id" column="Id" type="Int32"> <generator class="identity"/> </id> <property name="FirstName" length="50" type="String" column="FirstName" /> <property name="LastName" length="50" type="String" column="LastName" /> </class> </hibernate-mapping>
3.添加 NHibernate 配置文件 从配置模板里复制出对应的配置文件,我这里是sql2005,请童鞋参照自己的数据库进行设置,注意 将此文件放到bin里面,这样方便读取,还要在app.config 或者web.config 里设置下section,因为顺序是先单独配置,然后进行整合所以可能在后续的内容里会重新设置,请童鞋注意。section 必须是放在最前面 否则依然会报错
1.在app.config 或者web.config里添加如下内容:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" /> </configSections> </configuration>
2.修改数据库相关配置:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > <session-factory> <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> <property name="connection.connection_string">Server=.\SQLEXPRESS;Database=BookDemo;Integrated Security=SSPI</property> <!--<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="adonet.batch_size">10</property> <property name="show_sql">false</property> <property name="use_outer_join">true</property> <property name="command_timeout">60</property> <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> <property name="proxyfactory.factory_class">NHibernate.ByteCode.Spring.ProxyFactoryFactory, NHibernate.ByteCode.Spring</property>--> <!-- mapping files 关键配置,否则出异常:No persister for --> <mapping assembly="TestNHISpringIntegral.DAO" /> </session-factory> </hibernate-configuration>
上面注释掉的内容都是在配置完成之后正式使用的时候才需要的内容,所以我这里全部注释掉了。
4.到这里 NHibernate 就配置完成了,童鞋们可以写代码自己测试下 我的代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHibernate; using NHibernate.Cfg; namespace TestNhibreateWithConsole { public class ConfigurationHelper { private Configuration _config; private static ISessionFactory _sessionFactory; public ConfigurationHelper() { _config=new Configuration(); } private ISessionFactory SessionFactory { get { if (_sessionFactory == null) { _config= new Configuration().Configure(); _sessionFactory = _config.BuildSessionFactory(); } return _sessionFactory; } } public ISession OpenSession() { return SessionFactory.OpenSession(); } } }
页面上如下:
static void Main(string[] args) { using (var sessionFactory = new ConfigurationHelper().OpenSession()) { var user = sessionFactory.CreateCriteria<R.Books>(); var auList = user.List<R.Books>(); auList.ToList().ForEach(au => Trace.WriteLine(au.Publisher)); } }
忘记说明一点 因为这个NHibernate 依赖其他程序集 请一并进行引用。到这里NHibernate 配置就完成了,下面是spring.net 的配置
5. 引用spring.net 相关程序集,因为我这里是使用的web测试的 所以将一些文件都分开了,我的文件目录如图:
<?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <configSections> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/> <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/> </sectionGroup> <section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <spring> <parsers> <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/> <parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/> </parsers> <context> <resource uri="assembly://TestNHISpringIntegral.Core/TestNHISpringIntegral.Core/Repository.xml"/> <resource uri="assembly://TestNHISpringIntegral.Bll/TestNHISpringIntegral.Bll/Manager.xml"/> </context> </spring> <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5level %logger - %message%newline" /> </layout> </appender> <!-- Set default logging level to DEBUG --> <root> <level value="DEBUG" /> <appender-ref ref="ConsoleAppender" /> </root> <!-- Set logging for Spring. Logger names in Spring correspond to the namespace --> <logger name="Spring"> <level value="INFO" /> </logger> <logger name="Spring.Data"> <level value="DEBUG" /> </logger> <logger name="NHibernate"> <level value="INFO" /> </logger> </log4net> <databaseSettings> <add key="db.datasource" value=".\SQLEXPRESS" /> <add key="db.database" value="BookDemo" /> <add key="db.user" value="sa"/> <add key="db.password" value="123456"/> </databaseSettings> <!--<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.3.1.4000" newVersion="3.3.1.4000" /> </dependentAssembly> </assemblyBinding> </runtime>--> </configuration>
View Code
里面的程序集
<context> <resource uri="assembly://TestNHISpringIntegral.Core/TestNHISpringIntegral.Core/Repository.xml"/> <resource uri="assembly://TestNHISpringIntegral.Bll/TestNHISpringIntegral.Bll/Manager.xml"/> </context>
对应的是前面添加的配置文件,请配置正确,否则也会报错跑不起来,这里因为我忘记具体的错误了,所以只是提醒大家注意这里,这样整个就贯穿起来了。
页面代码:
log4net.Config.XmlConfigurator.Configure(); IApplicationContext applicationContext = ContextRegistry.GetContext(); authorManager = (IAuthor)applicationContext.GetObject("AuthorManager"); var authorM=authorManager.Get(2); Response.Write(authorM.FirstName+"^^^^^^^");
到此全部完成,至于MVC 只是调用所以就没写上来,大家自己去整合,如果有问题请留言大家一起探讨,不喜勿喷。
相关文章推荐
- eclipse开发的项目导入到myeclipse
- Spring3系列5-Bean的基本用法
- Spring Security教程(14)---- Logout和SessionManager
- java入门
- springMvc+ hibernate+spring
- Java 对Map排序
- Java Thread UncaughtExceptionHandler
- eclipse生成jar包
- JAVA多线程 Semaphore 应用
- java web start 怎样部署项目
- Java学习--final与static
- MyEclipse10.0 采用插件方式安装 SVN
- 《java解惑》读书笔记5——异常谜题
- 深入分析java web 技术内幕_笔记_六
- Java 正则表达式
- java poi Excel循环合并行
- java高级编程学习如何使用打印服务 API
- Java中的换行符
- java开发配置环境变量备忘
- JAVA多线程 Exchanger 应用