1 / 14

NHibernate

NHibernate. Aprendendo como funciona o NHibernate Elvis Medeiros Programador .NET. Conteúdo da Apresentação. Porque usar Hibernate Como ele funciona Arquivos necessários para o Nhibernate Pontos Positivos Pontos Negativos Prática Referências. Porque usar Hibernate.

peigi
Download Presentation

NHibernate

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NHibernate Aprendendo como funciona o NHibernate Elvis Medeiros Programador .NET

  2. Conteúdo da Apresentação • Porque usar Hibernate • Como ele funciona • Arquivos necessários para o Nhibernate • Pontos Positivos • Pontos Negativos • Prática • Referências

  3. Porque usar Hibernate

  4. Persistência dos Objetos Objetos da Camada de Dados (Repositório) Microsoft SQL Server 2005/2000 Oracle Microsoft Access Firebird PostgreSQL DB2 UDB MySQL SQLite Dados

  5. Arquivos Necessários • Arquivo de Mapeamento. • Arquivo de Configuração do NHibernate. • API do NHibernate.

  6. Arquivo de Mapeamento Tabela: AVISO_INSCRICAO

  7. Arquivo de Mapeamento PublicclassAvisoInscricao { privateint _id; private string _aviso_inscricaoname; privatebool _deletado; ... public virtual int Id { get{ return _id;} set{isChanged |=(_id != value); _id = value;} } public virtual bool Deletado { get{ return _deletado;} set{isChanged |=(_deletado != value); _deletado = value;} } ... }

  8. Arquivo de Mapeamento <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="BVR_CPM_ClassesBasicas" namespace="BVR_CPM_ClassesBasicas" default-lazy="false"> <class name="BVR_CPM_ClassesBasicas.AvisoInscricao,BVR_CPM_ClassesBasicas" table="CPM_AVISO_INSCRICAO"> <id name="Id" column="ID" type="Int32" unsaved-value="0"> <generator class="native" /> </id> <property column="AVISO_INSCRICAO" type="String" name="AvisoInscricaoName" not-null="true" length="2147483647" /> <property column="DELETADO" type="Boolean" name="Deletado" not-null="true" /> </class> </hibernate-mapping>

  9. Arquivo de Configuração using System; using System.Web; using System.Collections.Generic; using System.Reflection; using System.Text; usingNHibernate; usingNHibernate.Cfg; publicsealedclassNHibernateHelper { privateconst string CurrentSessionKey = "nhibernate.current_session"; privatestaticreadonlyISessionFactorysessionFactory; staticNHibernateHelper() { sessionFactory = newConfiguration().Configure().BuildSessionFactory(); } publicstaticISessionGetCurrentSession() { CloseSession(); HttpContextcontext = HttpContext.Current; ISessioncurrentSession = context.Items[CurrentSessionKey] as ISession; if (currentSession == null) { currentSession = sessionFactory.OpenSession(); context.Items[CurrentSessionKey] = currentSession; } returncurrentSession; } publicstaticvoidCloseSession() { HttpContextcontext = HttpContext.Current; ISessioncurrentSession = context.Items[CurrentSessionKey] as ISession; if (currentSession == null) { // No currentsession return; } try { currentSession.Close(); } catch (Exception ex) { throw ex; } context.Items.Remove(CurrentSessionKey); } publicstaticvoidCloseSessionFactory() { if (sessionFactory != null) { sessionFactory.Close(); } } }

  10. Arquivo de Configuração <?xml version="1.0" encoding="utf-8" ?> <hibernate-configurationxmlns="urn:nhibernate-configuration-2.2" > <session-factoryname="NHibernate.NHROWS"> <!-- properties --> <propertyname="connection.provider">NHibernate.Connection.DriverConnectionProvider </property> <propertyname="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <propertyname="connection.connection_string">Data Source=SRV-DB;InitialCatalog=BVR_CPM_BASE; PersistSecurityInfo=True;User ID=sa; password=Redes21220 </property> <propertyname="dialect">NHibernate.Dialect.MsSql2005Dialect</property> <!-- mapping files --> <mappingassembly="BVR_CPM_Repositorios" /> </session-factory> </hibernate-configuration>

  11. API do NHibernate

  12. Pontos Positivos/Negativos • Positivos • Separação do código em camadas. • Tratamento contra SQL Injection. • Abrange a maioria dos bancos de dados. • Negativo • Grande quantidade de código gerada, aumenta a chance de erros de código. • Não é mais rápido do que uma consulta direto no banco. • Amarração a coleção de objetos.

  13. Prática

  14. Referências • http://www.macoratti.net/08/12/vbn_hib1.htm • http://www.linhadecodigo.com.br/Artigo.aspx?id=546 • http://www.linhadecodigo.com.br/Artigo.aspx?id=2140

More Related