<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-35481909</id><updated>2012-02-01T01:53:36.625+02:00</updated><category term='log4net'/><category term='NHibernate'/><category term='Spring.NET'/><category term='ODP.NET'/><category term='Oracle'/><category term='.Net'/><category term='ODT.NET'/><category term='NHibernator'/><title type='text'>Oracle@DotNet</title><subtitle type='html'>In this Blog you can find stuff related with .Net development in the Oracle environment.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oracleatdotnet.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oracleatdotnet.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tomer Avissar</name><uri>http://www.blogger.com/profile/01202587804743527173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/189/3949/320/DSCF022.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35481909.post-4752659088274027223</id><published>2007-07-04T10:13:00.000+03:00</published><updated>2007-07-04T11:07:26.926+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ODT.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='ODP.NET'/><title type='text'>ODP.NET 11g beta is here!</title><content type='html'>Well, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ODP&lt;/span&gt;.NET 11g is here, and with it a long list of features to support the .Net to Oracle &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;experience&lt;/span&gt;. But it's not just &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ODP&lt;/span&gt;.NET anymore, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ODAC&lt;/span&gt; (Oracle Data Access Components) package now contains a set of products for the .Net developer, all in single installation.&lt;br /&gt;&lt;p&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;ODAC&lt;/span&gt; consists of 3 components:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Oracle Data Provider for .NET (AKA &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ODP&lt;/span&gt;.NET)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This is Oracle's ADO.NET implementation (Oracle.DataAccess.dll) that supports the latest database features. Some of the new features are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Instant Client Support - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;XCopy&lt;/span&gt; installation with small client footprint&lt;/li&gt;&lt;li&gt;User-Defined Types - Map Oracle objects and collections to .NET custom types and support &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;REFs&lt;/span&gt; to object types&lt;/li&gt;&lt;li&gt;Connection Pool Performance Counters - Option to monitor the connection pool using the Windows Performance Monitor.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Oracle Developer Tools for Visual Studio .NET (AKA &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;ODT&lt;/span&gt;.NET)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;ODT&lt;/span&gt;.NET is now fully integrated with the server explorer, that means it is now consists of a query builder and supports paging, but there is more than that:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Oracle Database script project - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ODT&lt;/span&gt;.NET now &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;supports&lt;/span&gt; source &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;controlling&lt;/span&gt; for the Oracle schema objects. That means that now we can keep &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;versioning&lt;/span&gt; on &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;Packages&lt;/span&gt;, Stored Procedures, Tables etc.&lt;/li&gt;&lt;li&gt;Explain plan support - now you don't have to use a command line to view the execution plan. You can see it built in to the Visual Studio.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Oracle Providers for ASP.NET&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ever looked for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;OracleMembershipProvider&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;OracleRoleProvider&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;OracleProfileProvider&lt;/span&gt;?&lt;/p&gt;&lt;p&gt;ASP.NET contains new components that can help us implement common use cases, like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Login&lt;/span&gt; to a system, Roles &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_19"&gt;management&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Sitemap&lt;/span&gt;, Personalization etc. All of these components now can be now persisted to Oracle using Oracle Providers for ASP.NET.&lt;/p&gt;&lt;p&gt;The full list of features can be found here: &lt;a href="http://www.oracle.com/technology/tech/windows/odpnet/newbetafeatures.html"&gt;http://www.oracle.com/technology/tech/windows/odpnet/newbetafeatures.html&lt;/a&gt;&lt;/p&gt;you can &lt;a href="http://www.oracle.com/technology/software/tech/windows/odpnet/index_11gbeta.html"&gt;download it &lt;/a&gt;at the &lt;a href="http://otn.oracle.com/"&gt;Oracle Technology Network &lt;/a&gt;site, for free of course...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35481909-4752659088274027223?l=oracleatdotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleatdotnet.blogspot.com/feeds/4752659088274027223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35481909&amp;postID=4752659088274027223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/4752659088274027223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/4752659088274027223'/><link rel='alternate' type='text/html' href='http://oracleatdotnet.blogspot.com/2007/07/odpnet-11g-beta-is-here.html' title='ODP.NET 11g beta is here!'/><author><name>Tomer Avissar</name><uri>http://www.blogger.com/profile/01202587804743527173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/189/3949/320/DSCF022.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35481909.post-4405560057524630724</id><published>2007-05-02T10:46:00.000+03:00</published><updated>2007-05-02T10:53:28.684+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NHibernator'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><title type='text'>NHibernator in SourceForge</title><content type='html'>Hya all NHibernator users,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(&lt;/span&gt;&lt;a href="http://oracleatdotnet.blogspot.com/2007/04/nhibernator-simple-but-yet-powerful.html"&gt;&lt;span style="font-size:85%;"&gt;What is NHibernator anyway?&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;NHibernator is now available in SourceForge&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/nhibernator"&gt;http://sourceforge.net/projects/nhibernator&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get anonymous access to the cvs, and see the code&lt;br /&gt;&lt;a href="http://nhibernator.cvs.sourceforge.net/nhibernator/"&gt;http://nhibernator.cvs.sourceforge.net/nhibernator/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35481909-4405560057524630724?l=oracleatdotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleatdotnet.blogspot.com/feeds/4405560057524630724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35481909&amp;postID=4405560057524630724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/4405560057524630724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/4405560057524630724'/><link rel='alternate' type='text/html' href='http://oracleatdotnet.blogspot.com/2007/05/nhibernator-in-sourceforge.html' title='NHibernator in SourceForge'/><author><name>Tomer Avissar</name><uri>http://www.blogger.com/profile/01202587804743527173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/189/3949/320/DSCF022.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35481909.post-1822281712480988077</id><published>2007-04-15T13:57:00.000+03:00</published><updated>2008-12-10T22:43:30.597+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NHibernator'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><title type='text'>NHibernator - The simple but yet powerful NHibernate helper</title><content type='html'>&lt;strong&gt;Overview&lt;/strong&gt;&lt;br /&gt;Working with NHibernate requires the use of a framework to configure NHibernate and to manage the session. The NHibernate wiki contains documentation about the recommended way to do it (see &lt;a href="http://www.hibernate.org/363.html"&gt;http://www.hibernate.org/363.html&lt;/a&gt;) especially in an ASP.NET environment.&lt;br /&gt;&lt;br /&gt;Frameworks like Spring.Net and Castle provide a full-featured solution for integrating NHibernate in an application, but for some applications it's considered as overkill.&lt;br /&gt;That's why most applications use some kind of homemade NHibernate Helper, based on code examples from the Internet. Some of them can be found at the bottom of &lt;a href="http://www.hibernate.org/363.html"&gt;http://www.hibernate.org/363.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So I was searching for a simple NHibernate Helper that is simple to integrate, but still provides the feature I need, like working with multiple databases, support for ASP.NET and Winform environment, and more...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NHibernator&lt;/strong&gt;&lt;br /&gt;I created the NHibernator as a solution for a simple NHibernate Helper, I will upload it to SourceForge as an open source so people can contribute. Meanwhile you can &lt;a href="http://avissar.googlepages.com/NHibernatorSetup.msi"&gt;download it here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Main features:&lt;br /&gt;1. Easy configuration at the bootstrap, with a specific configuration file.&lt;br /&gt;2. Support for multiple databases.&lt;br /&gt;3. OpenSessionInViewModule for ASP.NET applications.&lt;br /&gt;4. Thread bounded session management for Winform application.&lt;br /&gt;5. NHibernatorTransaction for easy transaction management, with automatic Rollback and easy snippet for easy coding.&lt;br /&gt;&lt;br /&gt;NHibernator supports 3 session management mechanisms.&lt;br /&gt;1. OpenSessionInViewModule: Just define a module in the web.config and the session will be opened when needed and released at the end of each request.&lt;br /&gt;2. Session per Transaction: In a non-web applications session will be opened at the beginning the transaction and closed at the end of it.&lt;br /&gt;3. Manual session management: Session will be opened and closed manually with NHibernator.OpenSession() and NHibernator.CloseSession() respectively.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How to use?&lt;/strong&gt;&lt;br /&gt;1. Basic Configuration: Just place "hibernate.cfg.xml" file in the executable directory, as an alternative you can use the "NHibernatorConfigFileLocation" key in the appSettings section of the web.config. For example:&lt;br /&gt;&lt;br /&gt;&lt;div class="source-code" style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;appSettings&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;add&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;key&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;NHibernatorConfigFileLocation&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;~Config\hibernate.cfg.xml&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;appSettings&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This can either be full path or relative path using ~. For multiple databases use semicolon, for example:&lt;br /&gt;&lt;br /&gt;&lt;div class="source-code" style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;appSettings&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;add&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;key&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;NHibernatorConfigFileLocation&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;~Config\hibernate1.cfg.xml;~Config\hibernate2.cfg.xml&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;appSettings&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;2. ASP.NET: For a web application you will probably want to use the OpenSessionInViewModule for handling the session at the http-request level.&lt;br /&gt;This can be done by adding this to your web.config file.&lt;br /&gt;&lt;br /&gt;&lt;div class="source-code" style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;httpModules&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;add&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;name&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;NHibernator&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;NHibernatorFramework.OpenSessionInViewModule,&amp;nbsp;NHibernator&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;httpModules&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;3. Using NHibernator&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add a reference to the NHibernator assembly.&lt;/li&gt;&lt;li&gt;Add a using to NHibernatorFramework.&lt;/li&gt;&lt;li&gt;Get the session with NHibernator.GetSession(). When using a Data Access Layer in your application, it's recommended to use a BaseDal like this:&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="source-code" style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#0000FF;"&gt;public&amp;nbsp;class&amp;nbsp;&lt;/span&gt;&lt;span style="color:#2B91AF;"&gt;BaseDAO&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;protected&amp;nbsp;&lt;/span&gt;&lt;span style="color:#2B91AF;"&gt;ISession&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;session&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;public&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;BaseDAO()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session&amp;nbsp;=&amp;nbsp;NHibernator.GetSession();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;When using multiple databases, you will have to specify the name of the sessionFactory to use, like this:&lt;br /&gt;NHibernator.GetSession("SomeDB")&lt;br /&gt;respectively with the name defined in the xml&lt;br /&gt;&lt;br /&gt;&lt;div class="source-code" style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;hibernate-configuration&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;urn:nhibernate-configuration-2.2&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;session-factory&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;SomeDB&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;property&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;hibernate.connection.connection_string&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;...&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;property&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;session-factory&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;4. NHibernatorTransaction: Using NHibernatorTransaction will provide Auto Rollback on exceptions, and Automatic session-per-transaction management for a non-web application.&lt;br /&gt;For example:&lt;br /&gt;&lt;br /&gt;&lt;div class="source-code" style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#0000FF;"&gt;using&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(NHibernatorTransaction&amp;nbsp;transaction&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;NHibernatorTransaction())&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#008000;"&gt;//&amp;nbsp;some&amp;nbsp;dal&amp;nbsp;code&amp;nbsp;here&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;transaction.Commit();&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This can also be done using the "NHibernator Transaction" Snippet, like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5053709503780523474" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_X-2I17VvyzM/RiJiBJrajdI/AAAAAAAABAk/wzCCioQkb9I/s400/snippet_before.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5053709508075490786" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_X-2I17VvyzM/RiJiBZrajeI/AAAAAAAABAs/hZ8iR6ANsIc/s400/snippet_after.JPG" border="0" /&gt;&lt;br /&gt;That's it, Please comment if you have remarks or suggestions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35481909-1822281712480988077?l=oracleatdotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleatdotnet.blogspot.com/feeds/1822281712480988077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35481909&amp;postID=1822281712480988077' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/1822281712480988077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/1822281712480988077'/><link rel='alternate' type='text/html' href='http://oracleatdotnet.blogspot.com/2007/04/nhibernator-simple-but-yet-powerful.html' title='NHibernator - The simple but yet powerful NHibernate helper'/><author><name>Tomer Avissar</name><uri>http://www.blogger.com/profile/01202587804743527173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/189/3949/320/DSCF022.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_X-2I17VvyzM/RiJiBJrajdI/AAAAAAAABAk/wzCCioQkb9I/s72-c/snippet_before.JPG' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35481909.post-3089776356626244823</id><published>2007-02-26T01:00:00.000+02:00</published><updated>2007-02-25T02:21:41.421+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='ODP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='log4net'/><title type='text'>Oracling your log4net messages Log4NetOracleAppender</title><content type='html'>Log4Net has gained enormous popularity across .Net developers over the last years. And there is no wonder, at last there is a logging utility that is powerful and yet easy to use.&lt;br /&gt;For those of you who don''t know log4net, check it out at &lt;a href="http://logging.apache.org/log4net/"&gt;http://logging.apache.org/log4net/&lt;/a&gt;.&lt;br /&gt;One of the coolest things about log4net, is the Appender class that allows developers to output their logs to different logging targets.&lt;br /&gt;&lt;br /&gt;log4net is supplied with more than a couple appenders (see examples here &lt;a href="http://logging.apache.org/log4net/release/config-examples.html"&gt;http://logging.apache.org/log4net/release/config-examples.html&lt;/a&gt;)&lt;br /&gt;with them we can output our logs in to text files, event viewer, xml, console, smtp, database and many more. But there is still one question remains, what appender should I use?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;color:#000000;"&gt;Chossing an Appender&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Projects are usually struggling with the question, of what appender is most suitable for their application. The first obvious choice is usually the RollingFileAppender, which is simple, reliable and easy to configure. But what about DatabaseAppender (or in it's formal name 'AdoNetAppender')?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Writing logs to database has a lot of advantages:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deals well with large quantities of data. can store millions and millions of rows, and has a built in mechanism for archiving.&lt;/li&gt;&lt;li&gt;Shared across multiple applications, and more importantly across multiple applications servers.&lt;/li&gt;&lt;li&gt;And maybe the most important thing: messages written to database, are formatted to fields, and therefore queryable. Message stored in the database can be easily sorted, filtered, grouped and so on.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;But what about the disadvantages?&lt;/strong&gt;&lt;br /&gt;The most common issues developers usually raise against storing messages in the database are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;What if I have a problem in my system that's related with the database itself? That is indeed a good issue, but databases are much more stable these days, and in a well maintained environment, this should be a rare issue. Besides, isn't this problem also relevant to files? Writing to a file also isn't fault-safe, file can be locked by other process, the disk can be full. So in any case, a backup log is a good practice. &lt;/li&gt;&lt;li&gt;The 2nd one is usually, what about the performance? Well this is cool part.&lt;br /&gt;Log4net and the AdoNetAppender in particular, are designed to make the performance optimal, to the point that it's a non-issue in most systems.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;strong&gt;Some performance tricks&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Maybe the most importance thing is that log messages are asynchronous, meaning - your application never waits till message is actually written to database, so logging doesn't really affect the application response time.Connection always opened. Because the logger is a singleton in the system, there is no sense in opening and closing connections for each execution. So there is no overhead for opening connections.&lt;/li&gt;&lt;li&gt;AdoNetAppender also uses statement caching against the database. This feature minimizes the execution process very significantly.&lt;/li&gt;&lt;li&gt;Messages aren't flushed to the database for every message, thanks to log4net's buffering Appenders, messages persistence is deferred until the buffer is full so database round trips are minimized.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color:#000000;"&gt;&lt;p&gt;So, can it get any better than this?&lt;br /&gt;The answer is yes, it can!&lt;/p&gt;&lt;p&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;Log4NetOracleAppender&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;So I was looking at the source code of the AdoNetAppender, to see how is the database execution is implemented. And there it was:&lt;/p&gt;&lt;br /&gt;&lt;div style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;a&amp;nbsp;For&amp;nbsp;loop&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;With&amp;nbsp;a&amp;nbsp;cmd.ExecuteNonQuery()&amp;nbsp;inside&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Why not use bind array ?!&lt;br /&gt;In that moment I was shocked, all that hard work for nothing, to go that far and ruin it all at the end?&lt;br /&gt;ok, maybe I'm exaggerating a little bit , AdoNetAppender is a generic database appender and not Oracle appender, so obviously it would not use that feature. But actually, bind array perform up to a &lt;strong&gt;100 times better&lt;/strong&gt; than multiple executions (depends on network and the number of rows).&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;OracleAppender&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;So I took AdoNetAppender, and twiked it a little. Basically making it to work with ODP.NET.&lt;br /&gt;The major change is in the SendBuffer method, which is the method responsible for adding the records to the database, when the buffer is full. And it goes something like this...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="source-code" style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#2B91AF;"&gt;ArrayList&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;paramArr&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;foreach&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#2B91AF;"&gt;OracleAppenderParameter&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;param&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;in&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;m_parameters)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paramArr&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&amp;nbsp;&lt;/span&gt;&lt;span style="color:#2B91AF;"&gt;ArrayList&lt;/span&gt;&lt;span style="color:#000000;"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#2B91AF;"&gt;OracleParameter&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;oracleParam&amp;nbsp;=&amp;nbsp;(&lt;/span&gt;&lt;span style="color:#2B91AF;"&gt;OracleParameter&lt;/span&gt;&lt;span style="color:#000000;"&gt;)m_dbCommand.Parameters[param.ParameterName];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;foreach&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#2B91AF;"&gt;LoggingEvent&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;e&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;in&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;events)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;object&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;value&amp;nbsp;=&amp;nbsp;param.Layout.Format(e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;(value.ToString()==&lt;/span&gt;&lt;span style="color:#A31515;"&gt;&amp;quot;(null)&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;System.&lt;/span&gt;&lt;span style="color:#2B91AF;"&gt;DBNull&lt;/span&gt;&lt;span style="color:#000000;"&gt;.Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paramArr.Add(value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;oracleParam.Value&amp;nbsp;=&amp;nbsp;paramArr.ToArray();&lt;br /&gt;}&lt;br /&gt;m_dbCommand.ArrayBindCount&amp;nbsp;=&amp;nbsp;events.Length;&lt;br /&gt;m_dbCommand.ExecuteNonQuery();&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You can download the complete code here: &lt;a href="http://avissar.googlepages.com/Log4NetOracleAppender.zip"&gt;Log4netOracleAppender.zip&lt;/a&gt;.&lt;br /&gt;It's a good practice that you compile it into a dedicated assembly. If you do, make sure you use the full qualified name for the type, in the configuration (described later on)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Configuration&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The configuration isn't really different from the built-in AdoNetAppender, but to save you the hassle of reading some documentation, here is the short version:&lt;/p&gt;&lt;p&gt;Add the OracleAppender section&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="source-code" style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;appender&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;OracleAppender&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;log4net.Appender.OracleAppender&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;connectionString&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;data&amp;nbsp;source=xe;User&amp;nbsp;ID=tomer;Password=tomer&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;bufferSize&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;20&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;commandText&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;INSERT&amp;nbsp;INTO&amp;nbsp;Log&amp;nbsp;(LogDate,Thread,logLevel,Logger,Message)&amp;nbsp;VALUES&amp;nbsp;(to_timestamp(:log_date,&amp;nbsp;'dd-MM-yyyy&amp;nbsp;HH24:mi:ss.ff6'),&amp;nbsp;:thread,&amp;nbsp;:log_level,&amp;nbsp;:logger,&amp;nbsp;:message)&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;:log_date&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;dbType&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;String&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;layout&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;log4net.Layout.PatternLayout&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;%date{dd'-'MM'-'yyyy&amp;nbsp;HH':'mm':'ss'.'ffffff}&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;:thread&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;dbType&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;String&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;size&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;255&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;layout&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;log4net.Layout.PatternLayout&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;%thread&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;:log_level&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;dbType&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;String&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;size&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;50&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;layout&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;log4net.Layout.PatternLayout&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;%level&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;:logger&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;dbType&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;String&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;size&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;255&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;layout&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;log4net.Layout.PatternLayout&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;%logger&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameterName&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;:message&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;dbType&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;String&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;size&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;4000&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#A31515;"&gt;layout&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;log4net.Layout.PatternLayout&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;%message&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;parameter&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#A31515;"&gt;appender&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Make sure you change the connection string parameter to the desired database. You can also change the commandText to suit your database table and columns.&lt;/p&gt;&lt;p&gt;The BufferSize parameter is where you can set how many rows will be buffered until all rows flushed to the database with one Bind Array statement.&lt;/p&gt;&lt;p&gt;Now just make sure that you create the logs table itself, for example:&lt;/p&gt;&lt;br /&gt;&lt;div class="source-code" style="font-family:Courier New;font-size:10pt;"&gt;&lt;br /&gt;&lt;span style="color:#0000FF;"&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;LOG&amp;quot;&amp;nbsp;&lt;br /&gt;(&amp;quot;LOGDATE&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;TIMESTAMP&lt;/span&gt;&lt;span style="color:#000000;"&gt;(6),&lt;br /&gt;&amp;quot;THREAD&amp;quot;&amp;nbsp;VARCHAR2(255&amp;nbsp;BYTE),&lt;br /&gt;&amp;quot;LOGLEVEL&amp;quot;&amp;nbsp;VARCHAR2(20&amp;nbsp;BYTE),&lt;br /&gt;&amp;quot;LOGGER&amp;quot;&amp;nbsp;VARCHAR2(255&amp;nbsp;BYTE),&lt;br /&gt;&amp;quot;MESSAGE&amp;quot;&amp;nbsp;VARCHAR2(4000&amp;nbsp;BYTE))&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35481909-3089776356626244823?l=oracleatdotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleatdotnet.blogspot.com/feeds/3089776356626244823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35481909&amp;postID=3089776356626244823' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/3089776356626244823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/3089776356626244823'/><link rel='alternate' type='text/html' href='http://oracleatdotnet.blogspot.com/2007/01/oracling-your-log4net-messages.html' title='Oracling your log4net messages Log4NetOracleAppender'/><author><name>Tomer Avissar</name><uri>http://www.blogger.com/profile/01202587804743527173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/189/3949/320/DSCF022.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35481909.post-2200421920097341089</id><published>2007-01-16T16:14:00.000+02:00</published><updated>2007-02-08T21:52:46.072+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='ODP.NET'/><title type='text'>As long as ODP.NET is under the hood - NHibernate</title><content type='html'>A lot of developers are embracing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0" onclick="BLOG_clickHandler(this)"&gt;ODP&lt;/span&gt;.NET as their Oracle ADO.NET provider (this as opposed to the built in Microsoft &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1" onclick="BLOG_clickHandler(this)"&gt;OracleClient&lt;/span&gt;).&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2" onclick="BLOG_clickHandler(this)"&gt;ODP&lt;/span&gt;.NET is a high performance provider that takes advantage of Oracle database functionality. More than that, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3" onclick="BLOG_clickHandler(this)"&gt;ODP&lt;/span&gt;.NET is fully documented, and updates regularly.&lt;br /&gt;&lt;br /&gt;When working with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4" onclick="BLOG_clickHandler(this)"&gt;NHinbernate&lt;/span&gt;, we can still make sure that it's using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5" onclick="BLOG_clickHandler(this)"&gt;ODP&lt;/span&gt;.NET under the hood. This will allow us to utilize &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6" onclick="BLOG_clickHandler(this)"&gt;ODP&lt;/span&gt;.NET features like the Connection Pool, Tracing etc. Plus, since this product is at Oracle's hands, it will ensure us compatibility and optimization with the Oracle database.&lt;br /&gt;&lt;br /&gt;In the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7" onclick="BLOG_clickHandler(this)"&gt;NHibernate&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8" onclick="BLOG_clickHandler(this)"&gt;config&lt;/span&gt; file, use this driver_class:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color:#000099;"&gt;&lt;br /&gt;&amp;lt;property name="connection.driver_class"&amp;gt;&lt;br /&gt;NHibernate.Driver.OracleDataClientDriver&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Can it be easier than that?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35481909-2200421920097341089?l=oracleatdotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleatdotnet.blogspot.com/feeds/2200421920097341089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35481909&amp;postID=2200421920097341089' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/2200421920097341089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/2200421920097341089'/><link rel='alternate' type='text/html' href='http://oracleatdotnet.blogspot.com/2007/01/as-long-as-odpnet-is-under-hood.html' title='As long as ODP.NET is under the hood - NHibernate'/><author><name>Tomer Avissar</name><uri>http://www.blogger.com/profile/01202587804743527173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/189/3949/320/DSCF022.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35481909.post-5757770336426823841</id><published>2007-01-05T22:53:00.000+02:00</published><updated>2007-01-16T15:43:57.531+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ODT.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='ODP.NET'/><title type='text'>Welcome Oracle &amp; .Net developers</title><content type='html'>&lt;input type="hidden" value="OracleAtDotNet"&gt;For quite some time I've been planning on creating a Blog to share my thoughts and knowledge with the people. So today I’m posting my first post (I hope the first of many…).&lt;br /&gt;&lt;br /&gt;As you can see in the “About Me” section, I’m a .Net consultant working in Oracle (I’m sure this fact puzzles some of you :-) . As you probably know, there are more than a few .Net project that chose to use Oracle as their database. That’s the reason Oracle is &lt;a href="http://www.oracle.com/technology/pub/columns/datta_dotnet.html"&gt;committed &lt;/a&gt;to provide the best connectivity and functionality between these two platforms, and that is why I’m here.&lt;br /&gt;&lt;br /&gt;In this Blog you will find posts on best practices with Oracle .Net related products like “Oracle Data Provider for .Net” (&lt;a href="http://www.oracle.com/technology/tech/windows/odpnet/"&gt;ODP.NET&lt;/a&gt;), "Oracle Developer Tools for Visual Studio .Net" (&lt;a href="http://www.oracle.com/technology/tech/dotnet/tools/index.html"&gt;ODT.NET&lt;/a&gt;), "&lt;a href="http://www.oracle.com/technology/tech/dotnet/ode/index.html"&gt;Oracle Database Extensions for .Net&lt;/a&gt;". I will also submit information and code, on database connectivity from other products like the ASP.NET 2.0 Providers, log4net.&lt;br /&gt;In addition, I will try to demonstrate open source solutions that help developers build a good enterprise application, like &lt;a href="http://www.hibernate.org/"&gt;NHibernate&lt;/a&gt;, &lt;a href="http://www.springframework.net/"&gt;Spring.Net&lt;/a&gt;, etc.&lt;br /&gt;&lt;br /&gt;So… that’s it for now. I will appreciate any feedbacks on stuff related to .Net and Oracle that you would like to see in this Blog.&lt;br /&gt;&lt;br /&gt;Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35481909-5757770336426823841?l=oracleatdotnet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracleatdotnet.blogspot.com/feeds/5757770336426823841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=35481909&amp;postID=5757770336426823841' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/5757770336426823841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35481909/posts/default/5757770336426823841'/><link rel='alternate' type='text/html' href='http://oracleatdotnet.blogspot.com/2007/01/welcome-oracle-net-developers.html' title='Welcome Oracle &amp; .Net developers'/><author><name>Tomer Avissar</name><uri>http://www.blogger.com/profile/01202587804743527173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/189/3949/320/DSCF022.jpg'/></author><thr:total>2</thr:total></entry></feed>
