Contenu connexe Similaire à Nhibernate -Co ban (20) Nhibernate -Co ban7. NHibernatelàmộtcảngcủaHibernate Corecho Java vào Framework. NETvàmộtsốứngdụngkhác. Nókiêntrìxửlýcácđốitượngđồngbằng NET. ĐếnvàtừmộtCSDL quanhệcơbản. Vớimộtmôtả XML củacácthựcthểvàmốiquanhệ. NHibernatetựđộngtạo SQL chotảivàlưutrữcácđốitượng. NHibernatekhôngphảitheomộtmôhìnhlậptrìnhhạnchế. 8. Cáclớphọcliêntụckhôngcầnphảithựchiệnbấtkỳgiaodiện hay kếthừatừmộtlớpcơsởđặcbiệt Điềunàylàmchonócóthểthiếtkế logic kinhdoanhbằngcáchsửdụngđồngbằng NET (. CLR) cácđốitượngvàthànhngữhướngđốitượng NHibernatekhôngphảitheomộtmôhìnhlậptrìnhhạnchế Cáclớphọcliêntụckhôngcầnphảithựchiệnbấtkỳgiaodiện hay kếthừatừmộtlớpcơsởđặcbiệt Điềunàylàmchonócóthểthiếtkế logic kinhdoanhbằngcáchsửdụngđồngbằng NET (. CLR) cácđốitượngvàthànhngữhướngđốitượng. 9. NHibernateđượcbắtđầubởi Tom Barrett, vàsauđóđượcchỉnhsửabởi Mike Doerflervà Peter Smulovics. Vàocuốinăm 2005, JBoss , Inc (nay làmộtphầncủaRed Hat ) thuê Sergey Koshcheyev, sauđódẫndắtvàpháttriểnNHibernate, đểlàmviệctoànthờigiantrêncácphiênbảntươnglai Vàocuốinăm 2006 JBossngừnghỗtrợđểdựánnày; ngày nay nóhoàntoànpháttriểnvà do cộngđồng. 10. CÁC PHIÊN BẢN CỦA NHIBERNATE Phiênbản 1.0 đượcnhânđôicáctínhnăngthiếtlậpcủa Hibernate 2.1, cũngnhưmộtsốtínhnăngtừ Hibernate 3. . NHibernate 1.2.1, pháthànhvàothángmườimộtnăm 2007 , đượcgiớithiệuthêmnhiềutínhnăngtừ Hibernate 3 vàhỗtrợcho, NET. 2,0 stored procedures , generics, vàcácloạinullable. NHibernate 2,0 đãđượcpháthànhngày 23 ThángTám 2008 Nóđược so sánhvới Hibernate 3.2 vềtínhnăng.Vớiphiênbản 2.0 pháthành, NHibernatebỏhỗtrợ 1.1. NET NHibernate 2,1 đãđượcpháthành 17 tháng 7 năm 2009. NHibernate 3,0 sẽlàphiênbảnđầutiênsửdụng NET 3.5.. 12. cáctínhnăngchính TínhnăngchínhcủaNHibernatelàánhxạtừcácloại NET. lớphọc CSDL đểbàn (và CLR từdữliệuSQLcácloạidữliệu) Natural programming model - Môhìnhlậptrìnhtựnhiên - NHibernatehỗtrợthànhngữ OO tựnhiên; thừakế, đahình, thànhphần, cácbộsưutập, baogồmcảcácbộsưutậpchung Support for fine-grained object models .Hỗtrợchocácmôhìnhđốitượnghạttinh - mộtloạiphongphúcủacácánhxạchocácbộsưutậpvàphụthuộccácđốitượng 13. cáctínhnăngchính No build-time bytecode enhancement .Khôngcóthờigiantăngcườngbytecode-xâydựng - khôngcómãsốthếhệphụhoặccácbướcchếbiếnbytecodetrongthủtụcxâydựng The query options -Cáctruyvấnlựachọn - NHibernateđịachỉcảhaimặtcủavấnđề; khôngchỉlàmthếnàođểcóđượccácđốitượngvào CSDL, màcònlàmthếnàođểcóđượchọtrởlại Custom SQL - Custom SQL - xácđịnhchínhxácrằng SQL NHibernatenênsửdụngđểkéodàicácđốitượngcủabạn. Stored procedures are supported on Microsoft SQL Server. thủtụclưutrữđượchỗtrợtrên Microsoft SQL Server. 14. cáctínhnăngchính Support for "conversations“- Hỗtrợcho "cuộchộithoại" - NHibernatehỗtrợhoàncảnhsốngbềnbỉ, lâudài, tháo / lắplạicủacácđốitượng, vàsẽchămsóccủakhóatựđộnglạcquan NHibernatecũngcungcấpdữliệutruyvấnvàcácphươngtiệncứu NHibernatetạoracáclệnh SQL vàgiúpcácnhàpháttriểntừdữliệuhướngdẫnsửdụngbộxửlývàchuyểnđổiđốitượng, lưugiữcácứngdụngdiđộngchohầuhếtcác CSDL SQL, với Portability CSDL trênkhôngthựchiệngiaotạirấtít Free/open source - Miễnphí / mãnguồnmở - NHibernateđượccấpphéptheo LGPL (Lesser GNU Public License) 17. 1. CàiĐặtNhibernate Tảixuốngcáctập tin NHibernate-2.1.2.GA-bin tạoramộtthưmụccótênNhibernate-Demo ngoàiDesktop (C:sersnhDucesktophibernate-Demo )vàgiảinéntập tin vừatải 29. Tạo 1 Folder cótên DTO thuộclớpthưviệnthuvienNhibernate(lớpthưviệntạotrướcđó) 31. namespace thuvienNhibernate.DTO { public class SinhVien { private int _Mssv, MaLop,; private string _HoTen,; private string _GioiTinh; private string _DiaChi; public intMssv { get { return _Mssv; } set { _Mssv = value; } } public string HoTen { get { return _HoTen; } set { _HoTen = value; } } public string GioiTinh { get { return _GioiTinh; } set { _GioiTinh = value; } } public string DiaChi { get { return _DiaChi; } set { _DiaChi = value; } } public int MaLop1 { get { return MaLop; } set { MaLop = value; } } } } 32. 3. XácđịnhBảnĐồ Đểcóthểtồntạitrườnghợpcủathựcthểnàytrongmột CSDL NHibernate (Mộtthểhiệncủamộtthựcthểtrongmiềntươngứngvớimộthàngtrongmộtbảngtrong CSDL) xácđịnhmộtánhxạgiữacácthựcthểvàbảngtươngứngtrong CSDL Lậpbảnđồnàycóthểđượcthựchiệnbằngcáchxácđịnhmộttập Mapping (DTO) hoặcbằngcáchtrangtrícácthựcthểcóthuộctính 34. <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2“ namespace="thuvienNhibernate“ assembly="thuvienNhibernate"> <class name="SinhVien" table="SinhVien" lazy="false"> <id name="Mssv" column="Mssv" unsaved-value="0"> <generator class="native"/> </id> <property name="HoTen"> <column name="HoTen" not-null="true"/></property> <property name="GioiTinh"> <column name="GioiTinh" not-null="true"/> </property> <property name="DiaChi"> <column name="DiaChi" not-null="true"/> </property> <property name="MaLop"> <column name="MaLop" not-null="true"/> </property> </class> </hibernate-mapping> 39. Cấuhìnhnhưsau : <?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property> <property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property> <property name="connection.connection_string">Data Source=C:sersnhDucesktopHibernate_1inhVienNhibernatehuvienNhibernateLSinhVien.sdf;Max Database Size=2047</property> <property name="show_sql">True</property> </session-factory> </hibernate-configuration> 40. 5. Cấu HÌNH nhIBERNATE Thêmmột CSDL trốngrỗng, gọilàQLSinhVien.sdfchodựánthuvienNhibernate(chọnCSDLđịaphươngnhưbảnmẫu) 45. Copy tấtcảcác file “*. dll” nằmtrongNHibernate-2.1.2.GA-bin chovaophan Debug củaỨngDụng 46. Ta có Code : using System; Using System.Collections.Generic; using System.Linq; using System.Text; using thuvienNhibernate.DTO; using thuvienNhibernate; using System.Configuration; namespace thuvienNhibernate.DAO { public class SessionFactorys { private static NHibernate.ISessionFactory _SessionFactory; private static void Init() { NHibernate.Cfg.Configurationconfig = new NHibernate.Cfg.Configuration(); config.Configure(); config.AddAssembly("thuvienNhibernate"); _SessionFactory = config.BuildSessionFactory(); } 48. THIẾT LẬP TRUY VẤN ĐẾN CSDL Tạo class SinhVienTruyvan.cs .VớilớpnàytạocáchàmIsert ,Delete,Update,Load CSDL 49. SELECT public static DataTableGetTable() { DataTabledt = new DataTable(); OleDbConnectioncn; cn = DataProvider.ConnectionData(); string strSQL; strSQL = "Select * From Sach"; OleDbDataAdapterda; da = new OleDbDataAdapter(strSQL, cn); da.Fill(dt); cn.Close(); return dt; } 51. INSERT public static void Add(SinhViensv) { ISession session = NHibernateHelper.GetCurrentSession(); ITransaction transaction = session.BeginTransaction(); session.Save(sv); session.Flush(); transaction.Commit(); NHibernateHelper.CloseSession(); } 53. DELETE public static void Add(SinhViensv) { ISession session = NHibernateHelper.GetCurrentSession(); ITransaction transaction = session.BeginTransaction(); session.Delete(sv); session.Flush(); transaction.Commit(); NHibernateHelper.CloseSession(); } 55. UPDATE public static void Add(SinhViensv) { ISession session = NHibernateHelper.GetCurrentSession(); ITransaction transaction = session.BeginTransaction(); session.Update(sv); session.Flush(); transaction.Commit(); NHibernateHelper.CloseSession(); } 58. Thêmmộtthưmục BUS thuộcdựánSinhVienNHibernate. Thêmmộtgiaodiện class cótênSinhVienBUS. Xácđịnhcácgiaodiệnsau : using System; using System.Collections.Generic; namespace ThuVienNHibernate.BUS { ( public class SinhVienTruyvanBUS { ( public static void AddSv(SinhViensv); public static void RemoveSv(SinhViensv); public static void UpdateSv(SinhViensv); } ) } ) 59. Dòng_SessionFactory = config.BuildSessionFactory() Đâylàmộtquátrìnhtốnkémvà do đónênđượcthựchiệnchỉmộtlần. Đólàlý do tạisaođặtnóvàophươngphápnàylàchỉthựchiệnmộtlầntrongmộtchukỳkiểmtra Đểgiữhiệulựcthửnghiệmcácphươngpháp, lạitạora CSDL schema trướckhithựchiệnmỗiphươngphápthửnghiệm.