Trong cách cải cách và phát triển ứng dụng web hiện giờ chắc hẳn các bạn vẫn quen với cùng với tự khóa ORM(Object Relational Mapping). Khi nhưng mà thời đại của các framework ứng với các ngôn từ đã đăng quang một cách trẻ khỏe, ORM gần như là là việc chắt lọc hoàn hảo của các nhà phát triển bây giờ.
Bạn đang xem: Object relational mapping là gì
ORM giúp chúng ta tiện lợi thao tác làm việc cùng với tài liệu vớiDatabase rộng, giúp chúng ta dễ code, dễ maintain hơn . . . Ở bài viết này tôi đang reviews thông thường về ORM, đi sâu vào đối chiếu những điểm ưu thế, nhược điểm và khi nào áp dụng bọn chúng trong những dự án thực tiễn.
Để mang lại dễ dàng quan sát và theo dõi trường đoản cú thời đặc điểm này của nội dung bài viết tôi xin được dùng ORM cố kỉnh mang đến cụm từ bỏ Object Relational Mapping

Theo Wikipedia:
Object-relational mapping (ORM, O/RM, & O/R mapping tool) in computer science is a programming technique for converting data between incompatible type systems using object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language. There are both không tính phí and commercial packages available that persize object-relational mapping, although some programmers opt khổng lồ construct their own ORM tools.
Hiểu một giải pháp đơn giản dễ dàng thì
ORM là một trong những kỹ thuật thiết kế giúp ánh xạ những record dữ liệu vào hệ quản lí trị đại lý dữ liệu lịch sự dạng đối tượng người tiêu dùng vẫn tư tưởng trong những class - một có mang thịnh hành được thực hiện trong tất cả các ngôn ngữ văn minh ngày này như: Java, PHP, Ruby. Bạn có thể áp dụng kĩ thật này với bất kể dự án nào mình thích.

Theo Martin Fowler tất cả hai patterns được vận dụng cho các phương pháp thiết kế ORM khác biệt.
Một sốORMlừng danh thực hiện Active Record hoàn toàn có thể nói thương hiệu là: Eloquent, CachePHP, JOOQ, TOPLINK


Một số ORM khét tiếng áp dụng Data Mapper như: Doctrine, Hibernate, SqlAlchemy
2. ORM vận động thế nào ?nổi bật cơ phiên bản của ORM là gói gọn CSDL trong 1 object. một trong những phần của object vẫn cất data, cùng phần còn lại lo Việc data xử trí nhỏng như thế nào với trở nên nó thành CSDL quan hệ giới tính.
ORM giải quyết và xử lý vụ việc đồng bộ thân loại dữ liệu trả về khác nhau. Một bên là cửa hàng tài liệu, sinh hoạt kia dữ liệu được trình bày bên dưới dạng tập phù hợp các phiên bản ghi. Một mặt là các đối tượng người dùng, sinh hoạt đó tài liệu đc hiện thị bên dưới dạng object


ví dụ như về việc tìm và đào bới kiếm list bản ghi với ĐK với sql thuần
book_list = new List();sql = "SELECT * FROM library WHERE author = "Linus"";data = query(sql);while (row = data.next()) book = new Book(); book.setAuthor(row.get("author"); book_menu.add(book);Với ORM, nó sẽ đơn giản và dễ dàng nhỏng sau
book_danh mục = BookTable.query(author="Linus");Từ ví dụ đơn giản và dễ dàng bên trên họ tiện lợi nhận biết những ưu thế sau thời điểm thực hiện ORM
Ưu điểm
Rất những lắp thêm được triển khai "trường đoản cú động", liên quan cho tới việc xử lí tài liệu, trong ví dụ bên trên họ không cần quan tâm đến sự việc sử dụng vòng để convert data tự mysql ra, Chỉ cần biết đầu vào là từ khoá áp ra output trả lại 1 list các cuốn sách có author=LinusViệc áp dụng ORM có tác dụng bạn cần phải viết code theo quy mô MVC, khiến code của người tiêu dùng dễ dàng sửa đổi, bảo trì rộng.Quý Khách ko cần phải biết rất nhiều về MYSquốc lộ, chúng ta vẫn có thể tiếp cận dễ ợt với ORM.Model k buộc ràng chặt chẽ với áp dụng, giỏi nói theo một cách khác, Model thì linh hoạt, vị vậy chúng ta có thể chuyển đổi hoặc sử dụng nó bất cứ khu vực nàoORM được cho phép các bạn tận dụng điểm mạnh của OOPhường như kế thừa dữ liệu nhưng mà không hẳn nhức đầuNhược điểm
Với mỗi framework đang có 1 tlỗi viện ORM không giống nhau, tất nhiên là bạn nên mất thời hạn học nó. Và bởi bọn chúng là thư viện buộc phải sẽ khá "nặng".Performance ổn định so với những tróc nã vấn thường thì, nhưng mà Raw Squốc lộ sẽ luôn luôn làm cho giỏi hơn cùng với các dự án mập.ORM được xem như là abstracts của DB. Nếu các bạn không quan tâm tới những gì thực sự xảy ra khi áp dụng ORM. Nó rất có thể là dòng mồi nhử cùng với số đông bài bác tân oán N + 1 query.4 Đánh giá performance của ORMNhỏng ở vị trí nhược điểm bản thân bao gồm nói ORM sẽ có performance chậm hơn so với Việc áp dụng raw sql. Dưới đấy là một thống kê lại cùng với Eloquent ORM của Laravel với raw mysql.Môi trường:
CPU: Quad core Hãng sản xuất Intel Xeon E31220Network: Broadcom NetXtreme BCM5722 Gigabit Ethernet PCI ExpressMemory: 8.0 GBHDD: 2000.4 GBOperating System: CentOS4.1 Insert
Ở đây các bên phân tách đang insert con số nội dung bài viết không giống nhau trường đoản cú 1000 mang lại 10000 cho cả 2 kinh nghiệm trong những vòng lặp.
Eloquent ORM
1 | 1000 | 665,25 | 619,5 | 585,6 | 623,5 | 39,97 |
2 | 2000 | 1150 | 1140 | 1110 | 1133,3 | 20,81 |
3 | 3000 | 1490 | 1490 | 1420 | 1466,7 | 40,41 |
4 | 4000 | 1770 | 1790 | 1670 | 1743,3 | 64,29 |
5 | 5000 | 2080 | 2090 | 2220 | 2130,0 | 78,10 |
6 | 6000 | 2540 | 2510 | 2560 | 2536,7 | 25,16 |
7 | 7000 | 2930 | 3010 | 3080 | 3006,7 | 75,05 |
8 | 8000 | 3360 | 3520 | 3380 | 34đôi mươi,0 | 87,17 |
9 | 9000 | 3800 | 3900 | 3880 | 3860,0 | 52,91 |
10 | 10000 | 4270 | 4360 | 4390 | 4340,0 | 62,44 |
Raw SQL
1 | 1000 | 195,81 | 189,62 | 180,1 | 188,5 | 7,91 |
2 | 2000 | 322,78 | 335,64 | 307,01 | 321,8 | 14,33 |
3 | 3000 | 413,4 | 437,62 | 458,24 | 436,4 | 22,44 |
4 | 4000 | 598,87 | 567,57 | 559,01 | 575,2 | đôi mươi,98 |
5 | 5000 | 725,5 | 740,94 | 780,15 | 748,9 | 28,17 |
6 | 6000 | 867,93 | 869,12 | 891,27 | 876,1 | 13,14 |
7 | 7000 | 1000 | 996,14 | 949,05 | 981,7 | 28,36 |
8 | 8000 | 1150 | 1120 | 1130 | 1133,3 | 15,27 |
9 | 9000 | 1190 | 1270 | 1220 | 1226,7 | 40,41 |
10 | 10000 | 1430 | 1380 | 1450 | 14đôi mươi,0 | 36,05 |
Từ bảng bên trên ta có biểu vật dụng nhỏng sau

4.2 Update
Tại phía trên những đơn vị thí điểm sẽ update số lượng bài viết không giống nhau từ 1000 mang đến 10000 cho tất cả 2 kinh nghiệm trong mỗi vòng lặp.
Xem thêm: Well Noted Là Gì - Well Noted With Thanks Nghĩa Là Gì
Eloquent ORM
1 | 1000 | 305,59 | 316,06 | 297,93 | 306,5 | 9,10 |
2 | 2000 | 522,06 | 565,12 | 543,43 | 543,5 | 21,53 |
3 | 3000 | 778,4 | 772,33 | 790,52 | 780,4 | 9,26 |
4 | 4000 | 1040 | 1010 | 1080 | 1043,3 | 35,11 |
5 | 5000 | 1290 | 1240 | 1260 | 1263,3 | 25,16 |
6 | 6000 | 2540 | 2510 | 2560 | 2536,7 | 25,16 |
7 | 7000 | 2930 | 3010 | 3080 | 3006,7 | 75,05 |
8 | 8000 | 3360 | 3520 | 3380 | 34đôi mươi,0 | 87,17 |
9 | 9000 | 3800 | 3900 | 3880 | 3860,0 | 52,91 |
10 | 10000 | 4270 | 4360 | 4390 | 4340,0 | 62,44 |
Raw SQL
1 | 1000 | 195,81 | 189,62 | 180,1 | 188,5 | 7,91 |
2 | 2000 | 322,78 | 335,64 | 307,01 | 321,8 | 14,33 |
3 | 3000 | 413,4 | 437,62 | 458,24 | 436,4 | 22,44 |
4 | 4000 | 598,87 | 567,57 | 559,01 | 575,2 | 20,98 |
5 | 5000 | 725,5 | 740,94 | 780,15 | 748,9 | 28,17 |
6 | 6000 | 867,93 | 869,12 | 891,27 | 876,1 | 13,14 |
7 | 7000 | 1000 | 996,14 | 949,05 | 981,7 | 28,36 |
8 | 8000 | 1150 | 1120 | 1130 | 1133,3 | 15,27 |
9 | 9000 | 1190 | 1270 | 1220 | 1226,7 | 40,41 |
10 | 10000 | 1430 | 1380 | 1450 | 1420,0 | 36,05 |
Từ bảng trên ta có biều đồ sau

4.3 Select
Ở đây những trang bị nghiệm chia làm 3 lượt
4.4 Đánh giá và phân tích
Từ những số liệu bên trên có thể dễ dãi thấy được performance của raw sql ví dụ tốt rộng đối với ORM vào toàn bộ các hành động select, insert, update.
Lí do tại chỗ này là: ORM yêu cầu thời hạn chế tạo ra Model instances, tạo ra các property cho Mã Sản Phẩm với transkhung đối tượng người sử dụng Mã Sản Phẩm thành dữ liệu quan hệ trước khi triển khai câu hỏi giao tiếp cùng với database. Tất cả phần đa gì phía sau nó là Laravel đã convert từng code Eloquent ORM thành câu lệnh Squốc lộ thích hợp cùng tiếp nối thực hiện bên trên tầng database và trả lại kết quả lại tầng application. Vì vậy thời gian để thực thi 1 tác vụ luôn mất quá nhiều thời gian hơn đối với việc cần sử dụng raw sql.
Nhưng khoan, chớ vội chú ý phần đông số lượng bên trên mà gấp nói ORM là thiết bị bỏ đi.
Trong thực tế không một ai select vài ba nghìn bản ghi, tốt triển khai vấn đề tạo thành vài ba nghìn bản ghi trong một cơ hội.
Tức là khi con số bản ghi càng không nhiều thì độ chênh lênh về công suất sụt giảm đáng kể. Lúc đó cộng thêm vấn đề áp dụng giải pháp kinh nghiệm cabít của ORM khiến cho vận dụng của người tiêu dùng cũng lâm thời đồng ý được đối với những ích lợi về vận tốc phạt tiển ứng dụng(thời hạn phát triển), sa thải vấn đề thực hiện code lặp đi lặp lại, bảo mật thông tin tốt hơn vào nhiều thiết bị tuyệt vời khác nữa.
5. Tổng kếtTóm lại, đi xuyên suốt cả bài viết, tôi đã diễn tả phương pháp hoạt động của ORM, nêu những điểm ưu điểm với nhược điểm của ORM. Việc bao gồm cần áp dụng ORMhay không vẫn chính là đề tài tranh luận chưa có kết quả cuối cùng.
Về kinh nghiệm tay nghề của bạn dạng thân Khi làm cho dự án, mình hay set giữa ORM cùng Raw SQL làm thế nào để cho công dụng, cùng với các truy vấn thông thường, ORM là lựa chọn của bản thân mình. Với những tình huống cần làm việc với khá nhiều bản ghi,raw Squốc lộ có vẻ như phải chăng rộng. Nhưng khi dùng raw sql chúng ta buộc phải thực thụ cẩn thận về vấn đề Sql injection.
Cảm ơn các bạn sẽ theo dõi nội dung bài viết bên trên, vào bài viết tất cả xem thêm tự một trong những mối cung cấp.
Và lượm nhặt linh tinh mà không lưu giữ
