มีคนแนะนำว่าฉันใช้ ORM สำหรับโครงการที่ฉันออกแบบ แต่ฉันมีปัญหาในการค้นหาข้อมูลว่ามันทำงานอย่างไร
ทุกคนสามารถให้คำอธิบายสั้น ๆ ว่า ORM คืออะไรและทำงานอย่างไรและฉันควรเริ่มใช้งานอย่างไร
มีคนแนะนำว่าฉันใช้ ORM สำหรับโครงการที่ฉันออกแบบ แต่ฉันมีปัญหาในการค้นหาข้อมูลว่ามันทำงานอย่างไร
ทุกคนสามารถให้คำอธิบายสั้น ๆ ว่า ORM คืออะไรและทำงานอย่างไรและฉันควรเริ่มใช้งานอย่างไร
คำตอบ:
การทำแผนที่วัตถุเชิงสัมพันธ์ (ORM) เป็นเทคนิคที่ช่วยให้คุณค้นหาและจัดการข้อมูลจากฐานข้อมูลโดยใช้กระบวนทัศน์เชิงวัตถุ เมื่อพูดถึง ORM คนส่วนใหญ่จะอ้างถึงห้องสมุดที่ใช้เทคนิคการทำแผนที่วัตถุเชิงสัมพันธ์ดังนั้นวลี "เป็นออม"
ORM ไลบรารี่เป็นไลบรารี่ธรรมดาที่เขียนในภาษาที่คุณเลือกซึ่งจะห่อหุ้มโค้ดที่จำเป็นสำหรับจัดการข้อมูลดังนั้นคุณจะไม่ใช้ SQL อีกต่อไป คุณโต้ตอบโดยตรงกับวัตถุในภาษาเดียวกันกับที่คุณใช้
ตัวอย่างเช่นต่อไปนี้เป็นกรณีจินตนาการโดยใช้ภาษาหลอก:
คุณมีชั้นหนังสือที่คุณต้องการดึงหนังสือทั้งหมดที่ผู้แต่งคือ "ไลนัส" ด้วยตนเองคุณจะทำอะไรเช่นนั้น:
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
ด้วยไลบรารี ORM มันจะมีลักษณะเช่นนี้:
book_list = BookTable.query(author="Linus");
ชิ้นส่วนทางกลได้รับการดูแลโดยอัตโนมัติผ่านทางห้องสมุด ORM
การใช้ ORM ช่วยประหยัดเวลาได้มากเนื่องจาก:
การใช้ไลบรารี ORM นั้นมีความยืดหยุ่นมากกว่าเนื่องจาก:
แต่ออมอาจเป็นความเจ็บปวด:
for
วงดีใช้หนึ่ง ไม่ว่าไลบรารี ORM ที่คุณเลือกจะใช้หลักการเดียวกันทั้งหมด มีไลบรารี ORM อยู่มากมายที่นี่:
หากคุณต้องการลองใช้ไลบรารี ORM ในการเขียนโปรแกรมเว็บคุณควรใช้เฟรมสแต็กทั้งหมดเช่น:
อย่าพยายามเขียน ORM ของคุณเองเว้นแต่คุณจะพยายามเรียนรู้อะไรบางอย่าง นี่เป็นงานที่มหึมาและชิ้นงานเก่าใช้เวลาและงานก่อนที่จะเชื่อถือได้
ทุกคนสามารถให้คำอธิบายสั้น ๆ กับฉัน ...
แน่ใจ
ORM ย่อมาจาก "การทำแผนที่วัตถุสัมพันธ์"
ส่วนของObjectเป็นชิ้นส่วนที่คุณใช้กับภาษาการเขียนโปรแกรมของคุณ (python ในกรณีนี้)
สัมพันธ์ส่วนหนึ่งเป็นฐานข้อมูลเชิงสัมพันธ์ System Manager (ฐานข้อมูลที่มี) มีชนิดอื่น ๆ ของฐานข้อมูล แต่ที่นิยมมากที่สุดคือความสัมพันธ์ (คุณรู้ตารางคอลัมน์ PK fk ฯลฯ เช่นออราเคิล MySQL, MS SQL)
และในที่สุดส่วนการทำแผนที่คือที่ที่คุณทำสะพานเชื่อมระหว่างวัตถุและตารางของคุณ
ในแอปพลิเคชันที่คุณไม่ได้ใช้เฟรมเวิร์ก ORM คุณทำได้ด้วยมือ การใช้เฟรมเวิร์ก ORM จะช่วยให้คุณลดจำนวน boilerplate ที่จำเป็นในการสร้างโซลูชัน
สมมุติว่าคุณมีวัตถุนี้
class Employee:
def __init__( self, name ):
self.__name = name
def getName( self ):
return self.__name
#etc.
และโต๊ะ
create table employee(
name varcar(10),
-- etc
)
การใช้เฟรมเวิร์ก ORM จะช่วยให้คุณแมปออบเจ็กต์นั้นด้วยระเบียน db โดยอัตโนมัติและเขียนสิ่งที่ชอบ
emp = Employee("Ryan")
orm.save( emp )
และให้พนักงานแทรกลงในฐานข้อมูล
โอ๊ะไม่สั้นขนาดนั้น แต่ฉันหวังว่ามันง่ายพอที่จะจับบทความอื่น ๆ ที่คุณอ่าน
ORM (Object Relational Mapper) คือส่วน / เลเยอร์ของซอฟต์แวร์ที่ช่วยแมปรหัสวัตถุของคุณไปยังฐานข้อมูลของคุณ
บางคนจัดการด้านต่างๆมากกว่าคนอื่น ๆ ... แต่จุดประสงค์คือการลดน้ำหนักของชั้นข้อมูลออกจากไหล่ของนักพัฒนา
นี่เป็นคลิปสั้น ๆ จาก Martin Fowler (Data Mapper):
เช่นเดียวกับตัวย่อทั้งหมดมันคลุมเครือ แต่ฉันคิดว่ามันหมายถึงผู้ทำแผนที่วัตถุเชิงสัมพันธ์ - วิธีปิดตาของคุณและทำให้เชื่อว่าไม่มี SQL อยู่ข้างใต้ แต่เป็นวัตถุทั้งหมด ;-) ไม่เป็นความจริงแน่นอนและไม่มีปัญหา - เจฟฟ์แอตวู้ดที่มีสีสันสดใสได้อธิบาย ORM ว่าเป็นVietnam of CS ;-) แต่ถ้าคุณรู้จัก SQL น้อยหรือไม่มีเลยและมีปัญหาง่ายๆ / ปัญหาเล็ก ๆ พวกเขาสามารถช่วยคุณประหยัดเวลาได้! -)
ตัวแบบของวัตถุเกี่ยวข้องกับแนวคิดสามข้อต่อไปนี้การสืบทอดการห่อหุ้มข้อมูลแบบนามธรรมโมเดลเชิงสัมพันธ์ใช้แนวคิดพื้นฐานของความสัมพันธ์หรือตาราง ผลิตภัณฑ์การทำแผนที่วัตถุเชิงสัมพันธ์ (หรือการทำแผนที่) รวมความสามารถในการเขียนโปรแกรมภาษาวัตถุกับฐานข้อมูลเชิงสัมพันธ์