linq n hibernate net-tier
DESCRIPTION
TRANSCRIPT
![Page 1: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/1.jpg)
04/09/23 1
LINQN-HIBERNATENET-TIER
Nhóm D
GVLT: Th.S Lâm Quang Vũ
GVHD: Nguyễn Huy Khánh
![Page 2: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/2.jpg)
04/09/23 2
Giới thiệu về ORM• Object – Relational Mapping (ORM, O/RM,
O/R mapping)
• Là một kỹ thuật lập trình để chuyển đổi dữ liệu giữa các hệ thống không tương thích trong cơ sở dữ liệu quan hệ và các ngôn ngữ lập trình hướng đối tượng.
![Page 3: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/3.jpg)
04/09/23 3
LINQNhóm D1 + D2
GVLT: Th.S Lâm Quang Vũ
GVHD: Nguyễn Huy Khánh
![Page 4: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/4.jpg)
04/09/23 4
Thành viên nhóm• Nhóm D1: Phạm Ngọc Phú – 0612352 Phan Vũ Liêm – 0612207 Thái Ngân Phụng – 0612358 Nguyễn Thành Luân – 0612234 Lữ Thị Mỹ Phương – 0612339
• Nhóm D2: Lê Thành Dũng – 0512103 Hứa Chí Châu – 0512080 Bùi Việt Dũng – 0512101 Trương Hữ Giang – 0512110 Nguyễn Phước Hiền – 0512113
![Page 5: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/5.jpg)
04/09/23 5
Giới thiệu về LINQ
Lợi ích sử dụng LINQ
Ưu, khuyết điểm của LINQ
Hình ảnh Demo4
1
2
3
Nội dung chính
![Page 6: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/6.jpg)
04/09/23 6
Giới thiệu về LINQ1
LINQ
![Page 7: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/7.jpg)
04/09/23 7
Giới thiệu về LINQ• LINQ (Language Integrated Query) – Ngôn ngữ
truy vấn tích hợp - Ngôn ngữ thống nhất cách thức truy xuất dữ liệu trong .NET.
• Được phát triển từ năm 2003, và được công bố tại Hội nghị Microsoft Professional Developers vào 2005 do Anders Hejlsberg và nhóm của ông đã trình bày.
• Được tích hợp sẵn trong Visual Studio 2008 (.NET 3.5).
![Page 8: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/8.jpg)
04/09/23 8
Giới thiệu về LINQ
• LINQ được phân thành 3 loại:
– LINQ to Objects
– LINQ to XML
– LINQ to SQL
![Page 9: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/9.jpg)
04/09/23 9
Giới thiệu về LINQ
Lợi ích sử dụng LINQ
Ưu, khuyết điểm của LINQ
Hình ảnh Demo4
1
2
3
LINQ
![Page 10: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/10.jpg)
04/09/23 10
Lợi ích sử dụng LINQ2
LINQ
![Page 11: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/11.jpg)
04/09/23 11
Lợi ích sử dụng LINQ• Nó cung cấp một cách chung để truy xuất dữ
liệu từ bất kỳ nguồn nào với cùng một cú pháp.
• Giúp thực hiện truy vấn một cách dễ dàng hơn.
• Được tích hợp như cú pháp của ngôn ngữ lập trình.
![Page 12: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/12.jpg)
04/09/23 12
Giới thiệu về LINQ
Lợi ích sử dụng LINQ
Ưu, khuyết điểm của LINQ
Hình ảnh Demo4
1
2
3
LINQ
![Page 13: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/13.jpg)
04/09/23 13
Ưu, khuyết điểm của LINQ3
LINQ
![Page 14: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/14.jpg)
04/09/23 14
Ưu, khuyết điểm của LINQƯu điểm:
• Lập trình với cơ sở dữ liệu một cách dễ dàng.
• Không cần biết nhiều ngôn ngữ truy vấn khác mà vẫn có thể làm việc.
• Đơn giản hóa việc viết truy vấn.
Khuyết điểm:
• Lệ thuộc vào môi trường lập trình .NET
![Page 15: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/15.jpg)
04/09/23 15
Giới thiệu về LINQ
Lợi ích sử dụng LINQ
Ưu, khuyết điểm của LINQ
Hình ảnh Demo LINQ to SQL4
1
2
3
LINQ
![Page 16: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/16.jpg)
04/09/23 16
Hình ảnh Demo LINQ to SQL4
LINQ
![Page 17: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/17.jpg)
04/09/23 17
Thêm CSDL vào Project
![Page 18: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/18.jpg)
04/09/23 18
Thêm CSDL vào Project
![Page 19: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/19.jpg)
04/09/23 19
Thêm CSDL vào Project
![Page 20: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/20.jpg)
04/09/23 20
Thêm lớp LINQ to SQL
![Page 21: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/21.jpg)
04/09/23 21
Thêm lớp LINQ to SQL
![Page 22: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/22.jpg)
04/09/23 22
Thêm lớp LINQ to SQL
![Page 23: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/23.jpg)
04/09/23 23
Thêm lớp LINQ to SQL
![Page 24: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/24.jpg)
04/09/23 24
Thêm lớp LINQ to SQL
![Page 25: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/25.jpg)
04/09/23 25
Cấu trúc quản lý của LINQ to SQL
![Page 26: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/26.jpg)
04/09/23 26
Thêm, xóa, sửa dữ liệu
![Page 27: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/27.jpg)
04/09/23 27
Load dữ liệu lên FormLoad tất cả thông tin các loại sách ở bảng LoaiSach trong cơ sở dữ liệu lên form.
![Page 28: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/28.jpg)
04/09/23 28
Thêm dữ liệuThêm một loại sách mới vào bảng LoaiSach trong cơ sở dữ liệu.
![Page 29: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/29.jpg)
04/09/23 29
Cập nhật dữ liệuCập nhật thông tin loại sách vào bảng LoaiSach trong cơ sở dữ liệu.
![Page 30: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/30.jpg)
04/09/23 30
Xóa dữ liệuXóa một loại sách ra khỏi bảng LoaiSach trong cơ sở dữ liệu.
![Page 31: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/31.jpg)
04/09/23 31
Truy vấn trên một bảng
Tra cứu thông tin loại sách theo mã loại sách.
![Page 32: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/32.jpg)
04/09/23 32
Truy vấn trên nhiều bảng
Lấy thông tin tên sách, tên loại sách, tác giả, tên nhà xuất bản của tất cả các sách.
![Page 33: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/33.jpg)
04/09/23 33
Sử dụng distinct
Lấy tất cả tên loại sách trong bảng LoaiSach. Mỗi tên chỉ xuất hiện 1 lần.
![Page 34: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/34.jpg)
04/09/23 34
Sử dụng Order By
Sắp xếp tên các loại sách trong bảng LoaiSach theo thứ tự tăng dần.
![Page 35: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/35.jpg)
04/09/23 35
Sử dụng Group By
Ứng với mã loại sách là 1, đếm số lượng sách theo tên sách.
![Page 36: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/36.jpg)
04/09/23 36
Sử dụng joinLấy thông tin tên sách, tên loại sách, tác giả của tất cả các sách.
![Page 37: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/37.jpg)
04/09/23 37
Tham khảo• LINQ for Visual C Sharp 2008 Jun 2008 –
Fabio Claudio Ferracchiati
• Professional LINQ - Scott Klein
![Page 38: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/38.jpg)
04/09/23 38
NHibernateNhóm D3 + D5
GVLT: Th.S Lâm Quang Vũ
GVHD: Nguyễn Huy Khánh
![Page 39: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/39.jpg)
04/09/23 39
Thành viên nhóm• Nhóm D3: Ngô Minh Nhựt – 0612322 Võ Quang Nhật – 0612318 Lê Nguyễn Hoài Nam – 0612276 Huỳnh Công Tín – 0612534 Nguyễn Văn Nhật – 0612314
• Nhóm D5: Trần Nguyễn Hướng – 0412310 Lê Văn Thắng – 0512335 Trương Hoàng Linh – 0412315 Huỳnh Minh Hoàng – 0512126 Tôn Long Thịnh – 0512344
![Page 40: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/40.jpg)
04/09/23 40
Giới thiệu
Sử dụng NHibernate
Ưu, khuyết điểm4
1
2
Nội dung chính
![Page 41: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/41.jpg)
04/09/23 41
Giới thiệu• Hibernate: là Framework mở nguồn mở hỗ
trợ truy xuất CSDL cho các ứng dụng hướng đối tượng sử dụng CSDL quan hệ
• NHibernate: dành cho ứng dụng .NET
• Là các DLL chứa các lớp đối tượng
![Page 42: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/42.jpg)
04/09/23 42
NHibernate trong mô hình 3 lớp:
Giới thiệu
![Page 43: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/43.jpg)
04/09/23 43
Giới thiệu
• NHiberate có nhiệm vụ chuyển đổi dữ liệu giữa ứng dụng và CSDL: – Đọc – Ghi• Ánh xạ CSDL vào NHibernate dựa vào tập tin
hibernate.cfg.xml• Ánh xạ giữa lớp và bảng dựa vào tập tin cấu
hình *.hbm.xml
![Page 44: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/44.jpg)
04/09/23 44
Giới thiệu
Lịch sử:
- Được bắt đầu bởi: Tom Barrett
- 2005, JBoss, Inc. (thuộc Red Hat) đầu tư phát triển dựa án này
- 2006 JBoss ngừng hỗ trợ
- Hiện tại, NHibernate được phát triển chung
- www.hibernate.com/343.html
![Page 45: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/45.jpg)
04/09/23 45
Giới thiệu
Lịch sử: các phiên bản
• NHibernate 1.2.1: 11/2007, hỗ trợ .NET 2.0
• NHibernate 2.1: đang được phát triển
• NHibernate 3.0: phiên bản dự kiến dành
cho .Net 3.5
![Page 46: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/46.jpg)
04/09/23 46
Giới thiệu
Sử dụng NHibernate
Ưu, khuyết điểm4
1
2
Nội dung chính
![Page 47: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/47.jpg)
04/09/23 47
Sử dụng NHibernate
Cài đặtTạo Project, add referenceTạo CSDL và các lớp đối tượngTạo các tập tin cấu hìnhTruy xuất dữ liệu
![Page 48: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/48.jpg)
04/09/23 48
Sử dụng NHibernate
Cài đặtTạo Project, add referenceTạo CSDL và các lớp đối tượngTạo các tập tin cấu hìnhTruy xuất dữ liệu
![Page 49: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/49.jpg)
04/09/23 49
Cài đặt
Download NHibernate tại: www.hibernate.com/6.html
Chép thư mục chứa DLL vào thư mục chứa Project
![Page 50: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/50.jpg)
04/09/23 50
Sử dụng NHibernate
Cài đặtTạo Project, add referenceTạo CSDL và các lớp đối tượngTạo các tập tin cấu hìnhTruy xuất dữ liệu
![Page 51: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/51.jpg)
04/09/23 51
Tạo Project, add reference
Tạo Project, Add reference, Browse đến thư mục chứa các DLL của NHibernate
![Page 52: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/52.jpg)
04/09/23 52
Sử dụng NHibernate
Cài đặtTạo Project, add referenceTạo CSDL và các lớp đối tượngTạo các tập tin cấu hìnhTruy xuất dữ liệu
![Page 53: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/53.jpg)
04/09/23 53
Tạo CSDL và các lớp đối tượng
Tạo CSDL quan hệ
![Page 54: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/54.jpg)
04/09/23 54
Tạo CSDL và các lớp đối tượng
Tạo các lớp đối tượng tương ứng với các bảng của CSDL
![Page 55: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/55.jpg)
04/09/23 55
Sử dụng NHibernate
Cài đặtTạo Project, add referenceTạo CSDL và các lớp đối tượngTạo các tập tin cấu hìnhTruy xuất dữ liệu
![Page 56: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/56.jpg)
04/09/23 56
Tạo các tập tin cấu hìnhTạo tập tin cấu hình hibernate.cfg.xml
Giúp cho NHibernate biết cần phải liên kết với CSDL nào
<?xml version="1.0" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.JetDriver.JetDialect, NHibernate.JetDriver</property>
<property name="connection.driver_class">NHibernate.JetDriver.JetDriver, NHibernate.JetDriver</property>
<property name="connection.connection_string">Provider=Microsoft.Jet.OLEDB.4.0;Data Source=QuanLyThuVien.mdb</property>
</session-factory>
</hibernate-configuration>`
![Page 57: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/57.jpg)
04/09/23 57
Tạo các tập tin cấu hìnhTạo tập tin cấu hình hibernate.cfg.xml
<property name="connection.connection_string“> Provider=Microsoft.Jet.OLEDB.4.0;Data Source=QuanLyThuVien.mdb</property>
- Chuỗi kết nối đến CSDL
![Page 58: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/58.jpg)
04/09/23 58
Tạo các tập tin cấu hìnhTạo các tập tin ánh xạ *.hbm.xml• Mỗi lớp có một tập tin ánh xạ tương ứng:
[TenLop].hbm.xml
![Page 59: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/59.jpg)
04/09/23 59
Tạo các tập tin cấu hìnhTạo các tập tin ánh xạ *.hbm.xml
<class name="DTO.SachDto,DTO" table="Sach“>
<id name="MSach" column="MSach" type="int“><generator class="increment" />
</id>
<property name="TenSach" column="TenSach" type="String" />
![Page 60: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/60.jpg)
04/09/23 60
Sử dụng NHibernate
Cài đặtTạo Project, add referenceTạo CSDL và các lớp đối tượngTạo các tập tin cấu hìnhTruy xuất dữ liệu
![Page 61: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/61.jpg)
04/09/23 61
Truy xuất dữ liệu
Ánh xạ lớp đối tượng và CSDL
Kết nối với CSDL
Thực hiện các thao tác với CSDL
Đóng kết nối với CSDL
![Page 62: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/62.jpg)
04/09/23 62
Truy xuất dữ liệu
Ánh xạ lớp đối tượng và CSDL
Kết nối với CSDL
Thực hiện các thao tác với CSDL
Đóng kết nối với CSDL
![Page 63: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/63.jpg)
04/09/23 63
Ánh xạ lớp đối tượng và CSDL
Load file cấu hình và file ánh xạ, thực hiện
ánh xạ và trả về đối tượng ISessionFactory.
![Page 64: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/64.jpg)
04/09/23 64
Truy xuất dữ liệu
Ánh xạ lớp đối tượng và CSDL
Kết nối với CSDL
Thực hiện các thao tác với CSDL
Đóng kết nối với CSDL
![Page 65: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/65.jpg)
04/09/23 65
Kết nối CSDL
Đối tượng session giữ kết nối với CSDL và
thực hiện các thao tác đọc ghi trên CSDL
![Page 66: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/66.jpg)
04/09/23 66
Truy xuất dữ liệu
Ánh xạ lớp đối tượng và CSDL
Kết nối với CSDL
Thực hiện các thao tác với CSDL
Đóng kết nối với CSDL
![Page 67: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/67.jpg)
04/09/23 67
Thực hiện các thao tác với CSDL
![Page 68: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/68.jpg)
04/09/23 68
Thực hiện các thao tác với CSDL – select
IList lst = session.Find(“from DTO.DocGiaDto”);
// Đọc tất cả các record trong bảng DocGia
DocGiaDto dg = session.Load<DocGiaDto>(maDG);
dg.HoTen = “NMN”;
// Lấy ra một record từ bảng DocGia
![Page 69: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/69.jpg)
04/09/23 69
Thực hiện các thao tác với CSDL – insert
DocGiaDto dg = new DocGiaDto();
dg.HoTen = “NMN”;
dg.GioiTinh = 1;
// …
session.Save(dg);
// Lưu đọc giả dg vào bảng DocGia
![Page 70: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/70.jpg)
04/09/23 70
Thực hiện các thao tác với CSDL – delete
DocGiaDto dg = session.Load<DocGiaDto>(maDg);
session.Delete(dg);
// Xóa đọc giả “dg” khỏi bảng DocGia
![Page 71: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/71.jpg)
04/09/23 71
Thực hiện các thao tác với CSDL – update
DocGiaDto dg = session.Load<DocGiaDto>(maDg);
dg.HoTen = “Cập nhật”;
session.Update(dg);
// Cập nhật thông tin đọc giả “dg”
![Page 72: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/72.jpg)
04/09/23 72
Thực hiện các thao tác với CSDL – SqlQuery
String strSql = “select s.TenSach, ls.TenLoaiSach, s.TacGia from Sach s inner join LoaiSach ls on s.LoaiSach = ls.MLoaiSach where s.TrangThai=true”
/* Lấy về sách (Tên sách, tên loại sách, tác giả) chưa được mượn */
ISQLQuery query = session.CreateSQLQuery(strSql);
query.AddScalar(“TenSach",NHibernateUtil.String);
query.AddScalar(“TenLoaiSach",NHibernateUtil.String);
query.AddScalar(“TacGia",NHibernateUtil.String);
IList lst = query.List();
/* lst chứa danh sách những quyển sách tìm được */
![Page 73: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/73.jpg)
04/09/23 73
Thực hiện các thao tác với CSDL – SqlQuery
String strSql = “select * from DocGia where HoTen = ?”
/* Tìm độc giả theo tên */
ISQLQuery query = session.CreateSQLQuery(strSql);
query.SetString(“NMN”); // Set Parameters
query. AddEntity(typeof(DocGiaDto));
IList lst = query.List();
/* lst chứa danh sách độc giả có tên “NMN”*/
![Page 74: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/74.jpg)
04/09/23 74
Thực hiện các thao tác với CSDL
transaction.Commit();
Cập nhật các thay đổi xuống CSDL
transaction.Rollback();
Hủy bỏ các thay đổi
![Page 75: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/75.jpg)
04/09/23 75
Truy xuất dữ liệu thông qua NHibernate
Ánh xạ lớp đối tượng và CSDL
Kết nối với CSDL
Thực hiện các thao tác với CSDL
Đóng kết nối với CSDL
![Page 76: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/76.jpg)
04/09/23 76
Đóng kết nối với CSDL
![Page 77: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/77.jpg)
04/09/23 77
Giới thiệu
Sử dụng NHibernate
Ưu, khuyết điểm4
1
2
Nội dung chính
![Page 78: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/78.jpg)
04/09/23 78
Ưu, khuyết điểm
Ưu điểm• Hỗ trợ nhiều loại cơ sở dữ liệu (multi – database
support)• Giảm gánh nặng viết mã nguồn giao tiếp với cơ
sở dữ liệu• Cung cấp nhiều phương thức truy xuất CSDL
![Page 79: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/79.jpg)
04/09/23 79
Ưu, khuyết điểm
Khuyết điểm:• Người dùng NHibernate phải học cách viết tập tin
mapping.• Việc truy xuất CSDL đôi khi không tối ưu, dẫn đến tốc độ
thực thi chậm, ảnh hưởng performance của phần mềm.• Khó debug phần truy xuất cơ sở dữ liệu• Gặp không ít khó khăn trong khi cấu hình
![Page 80: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/80.jpg)
04/09/23 80
Tham khảo
http://www.hibernate.com
http://en.wikipedia.org/wiki/NHibernate
http://www.codeproject.com/KB/architecture/
NHibernateArchitecture.aspx
http://www.codeproject.com/KB/database/
Nhibernate_Made_Simple.aspx
![Page 81: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/81.jpg)
04/09/23 81
NET – TIERNhóm D4 + D6
GVLT: Th.S Lâm Quang Vũ
GVHD: Nguyễn Huy Khánh
![Page 82: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/82.jpg)
04/09/23 82
Thành viên nhóm• Nhóm D4: Nguyễn Hải Đăng - 0512438 Đào Duy Minh Đăng – 0512439 Phan Xuân Đình – 0512444 Nguyễn Lê Thanh Thảo – 0612418 Huỳnh Thanh Tuyền – 0612494
• Nhóm D6: Nguyễn Thành Trung – 0612468 Huỳnh Minh Trác – 0612482 Nguyễn Hữu Trí – 0612485 Vũ Ngọc Yến Vũ – 0612584
![Page 83: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/83.jpg)
04/09/23 83
Giới thiệu công cụ CodeSmith
Giới thiệu netTiers
Demo netTiers3
1
2
Nội dung chính
![Page 84: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/84.jpg)
04/09/23 84
CÔNG CỤ CODESMITH
Giới thiệu Công cụ phát sinh mã dựa trên template
có sẵn. Hỗ trợ ngôn ngữ: C#, VB.NET, Java, T-
SQL, FORTRAN. Cú pháp viết giống ASP.NET.
![Page 85: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/85.jpg)
04/09/23 85
CÔNG CỤ CODESMITH
Template là gì? Là một khung mẫu do người dùng định
nghĩa theo ngôn ngữ của CodeSmith.
![Page 86: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/86.jpg)
04/09/23 86
CÔNG CỤ CODESMITH STUDIO
Công cụ CodeSmith Studio Giúp soạn thảo, biên dịch và thực thi một
template. Hỗ trợ soạn thảo nhanh chóng giống như
Visual Studio.Net.
![Page 87: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/87.jpg)
04/09/23 87
Menu bar
Tool bar
Cửa sổ chính
Templete Explorer
Tab Templetet
Tab Output
![Page 88: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/88.jpg)
04/09/23 88
CÔNG CỤ CODESMITH EXPLORER
Công cụ CodeSmith Explorer Giúp phát sinh mã từ một template. Tổ chức, quản lý các thư mục chứa file
template (cst).
![Page 89: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/89.jpg)
04/09/23 89
CÔNG CỤ CODESMITH EXPLORER
![Page 90: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/90.jpg)
04/09/23 90
NETTIERSGiới thiệu Là một tập các template (nguồn mở)
dùng để phát sinh mã. Giúp đơn giản hóa việc tạo mới một ứng dụng chỉ trong vài phút.
Dựa trên công cụ CodeSmith để phát sinh ra mã.
Cung cấp cho người phát triển 1 framework đầy đủ để phát triển ứng dụng.
![Page 91: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/91.jpg)
04/09/23 91
NETTIERS
Kiến trúc .netTiers
![Page 92: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/92.jpg)
04/09/23 92
Demo
Bước 1: Khởi động CODESMITH EXPLORER, mở template
nettiers.
Bước 2: Nhập các thông tin của dự án.
Bước 3: genarate code.
![Page 93: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/93.jpg)
04/09/23 93Company Name
![Page 94: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/94.jpg)
04/09/23 94
![Page 95: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/95.jpg)
04/09/23 95
Demo
Add >> New item >> Application Configuration File
Copy nội dung từ file: NetTiers\*.UnitTests\ *.UnitTests.dll.config
Bước 4: Thêm project mới vào cho dự án, cấu hình cho project:
![Page 96: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/96.jpg)
04/09/23 96
Bước 5: Thiết kế giao diện
![Page 97: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/97.jpg)
04/09/23 97
AccountService accountsService = new AccountsService();
//GetAll()
TList<Accounts> accountList = accountsService.GetAll();
//GetPagedl()
TList<Accounts> accountList = accountsService.GetPaged("IsActive = 1 AND AccountName LIKE 'smi%'");
//GetByFk()
TList<Accounts> accountList = accountsService.GetByCustomerId(25);
………………………………………………………………….
AccountService accountsService = new AccountsService();
//GetAll()
TList<Accounts> accountList = accountsService.GetAll();
//GetPagedl()
TList<Accounts> accountList = accountsService.GetPaged("IsActive = 1 AND AccountName LIKE 'smi%'");
//GetByFk()
TList<Accounts> accountList = accountsService.GetByCustomerId(25);
………………………………………………………………….
Bước 6: Viết code select, insert, delete, update dữ liệu
![Page 98: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/98.jpg)
04/09/23 98
![Page 99: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/99.jpg)
04/09/23 99
![Page 100: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/100.jpg)
04/09/23 100
//Insert()
Account accountEntity = new Account();
accountEntity.AccountName = "MyAccountName";
accountEntity.CreatedDate = DateTime.Now;
accountsService.Insert(accountEntity);
//Insert()
Account accountEntity = new Account();
accountEntity.AccountName = "MyAccountName";
accountEntity.CreatedDate = DateTime.Now;
accountsService.Insert(accountEntity);
![Page 101: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/101.jpg)
04/09/23 101
//Delete()
bool result = accountsService.Delete(23);
//Delete()
bool result = accountsService.Delete(23);
DangKyService dkSer = new DangKyService();
dkSer.Delete(m.Isbn, m.MaDocgia);
DangKyService dkSer = new DangKyService();
dkSer.Delete(m.Isbn, m.MaDocgia);
![Page 102: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/102.jpg)
04/09/23 102
//Update()
accountEntity.AccountName = "MyAccountName 2"; accountsService.Update(accountEntity);
//Update()
accountEntity.AccountName = "MyAccountName 2"; accountsService.Update(accountEntity);
CuonSachService csSer = new CuonSachService();
CuonSach cs = csSer.GetByIsbnMaCuonSach(m.Isbn, m.MaCuonsach);
cs.TinhTrang = "Y";
csSer.Update(cs);
CuonSachService csSer = new CuonSachService();
CuonSach cs = csSer.GetByIsbnMaCuonSach(m.Isbn, m.MaCuonsach);
cs.TinhTrang = "Y";
csSer.Update(cs);
![Page 103: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/103.jpg)
04/09/23 103
Vấn đề select từ nhiều bảng dữ liệu
Danh sách các độc giả đang đăng ký mượn sách, hiển thị các thông tin: họ tên độc giả, tựa sách, ngày giờ đăng ký
![Page 104: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/104.jpg)
04/09/23 104
![Page 105: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/105.jpg)
04/09/23 105
Tham Khảo
http://patternshare.org/default.aspx/Home.PP.Singleton
http://www.dofactory.com/Patterns/PatternDecorator.aspx
http://www.NetTiers.com
http://docs.nettiers.com/
http://msdn2.microsoft.com/en-us/library/aa480458.aspx
![Page 106: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/106.jpg)
04/09/23 106
So sánh• Giống nhau:
Đều có cơ chế ORM
• Khác nhau:
LINQ không phải là 1 ORM tool hoàn chỉnh
Nhibernate là 1 ORM tool.
Net-Tier là 1 ORM tool.
![Page 107: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/107.jpg)
04/09/23 107
So sánh• Khác nhau:
LINQ chủ yếu là ngôn ngữ truy vấn hỗ trợ intellisense, trình biên dịch sẽ check syntax của câu truy vấn.
Nhibernate có ngôn ngữ truy vấn khá giới hạn, không có intellisense.
Net-Tier không có ngôn ngữ truy vấn dữ liệu mà truy vấn được phát sinh tự động.
![Page 108: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/108.jpg)
04/09/23 108
So sánh• Khác nhau:
LINQ chủ yếu dùng cho Microsoft SQL Server.
Nhibernate có thể được dùng với hầu hết bất kỳ hệ quản trị CSDL nào miễn là cung cấp DB provider.
Net-Tier chủ yếu dùng cho Microsoft SQL Server, nhưng vẫn có thể thao tác với các DBMS khác thông qua loại Generic.
![Page 109: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/109.jpg)
04/09/23 109
So sánh• Khác nhau:
LINQ Closed source.
Nhibernate Open source.
Net-Tier Open source.
![Page 110: Linq n hibernate net-tier](https://reader033.vdocuments.net/reader033/viewer/2022061215/54805141b4af9f137c8b457d/html5/thumbnails/110.jpg)
04/09/23 110