หากคุณมีแรงจูงใจใน "ข้อดี" ของ ORM และเหตุใดคุณจึงใช้ ORM ในการจัดการ / ลูกค้าเหตุผลเหล่านั้นคืออะไร?
พยายามเก็บเหตุผลเดียวต่อคำตอบเพื่อที่เราจะได้เห็นว่าข้อใดได้รับการโหวตให้เป็นเหตุผลที่ดีที่สุด
หากคุณมีแรงจูงใจใน "ข้อดี" ของ ORM และเหตุใดคุณจึงใช้ ORM ในการจัดการ / ลูกค้าเหตุผลเหล่านั้นคืออะไร?
พยายามเก็บเหตุผลเดียวต่อคำตอบเพื่อที่เราจะได้เห็นว่าข้อใดได้รับการโหวตให้เป็นเหตุผลที่ดีที่สุด
คำตอบ:
ทำให้การเข้าถึงข้อมูลเป็นนามธรรมและพกพาได้มากขึ้น คลาสการใช้งาน ORM รู้วิธีการเขียน SQL เฉพาะผู้ขายดังนั้นคุณไม่จำเป็นต้องทำ
เหตุผลที่สำคัญที่สุดในการใช้ ORM คือเพื่อให้คุณสามารถมีรูปแบบธุรกิจที่มุ่งเน้นเชิงวัตถุได้อย่างสมบูรณ์และยังสามารถจัดเก็บและเขียนแบบสอบถามที่มีประสิทธิภาพเทียบกับฐานข้อมูลเชิงสัมพันธ์ได้อย่างรวดเร็ว จากมุมมองของฉันฉันไม่เห็นข้อดีที่แท้จริงใด ๆ ที่ ORM ที่ดีจะให้คุณเมื่อเทียบกับ DAL ที่สร้างขึ้นอื่น ๆ นอกเหนือจากแบบสอบถามขั้นสูงที่คุณสามารถเขียนได้
แบบสอบถามประเภทหนึ่งที่ฉันนึกถึงคือแบบสอบถามหลายรูปแบบ แบบสอบถาม ORM อย่างง่ายอาจเลือกรูปร่างทั้งหมดในฐานข้อมูลของคุณ คุณได้รับคอลเลกชันของรูปทรงกลับคืนมา แต่แต่ละอินสแตนซ์จะเป็นรูปสี่เหลี่ยมจัตุรัสวงกลมหรือสี่เหลี่ยมผืนผ้าตามตัวแบ่งแยก
แบบสอบถามอีกประเภทหนึ่งคือแบบสอบถามที่ดึงข้อมูลวัตถุและวัตถุหรือคอลเลกชันที่เกี่ยวข้องอย่างน้อยหนึ่งรายการในการเรียกฐานข้อมูลเดียว เช่นวัตถุรูปร่างแต่ละชิ้นจะถูกส่งกลับพร้อมกับจุดยอดและคอลเลกชันด้านข้างที่บรรจุ
ฉันขอโทษที่ไม่เห็นด้วยกับคนอื่น ๆ มากมายที่นี่ แต่ฉันไม่คิดว่าการสร้างรหัสเป็นเหตุผลที่ดีพอที่จะไปกับ ORM คุณสามารถเขียนหรือค้นหาเทมเพลต DAL ที่ดีมากมายสำหรับตัวสร้างโค้ดที่ไม่มีค่าใช้จ่ายด้านแนวคิดหรือประสิทธิภาพแบบที่ ORM ทำ
หรือถ้าคุณคิดว่าคุณไม่จำเป็นต้องรู้วิธีเขียน SQL ที่ดีเพื่อใช้ ORM อีกครั้งฉันไม่เห็นด้วย อาจเป็นเรื่องจริงที่ว่าจากมุมมองของการเขียนแบบสอบถามเดี่ยวการพึ่งพา ORM นั้นง่ายกว่า แต่ด้วย ORM มันง่ายเกินไปที่จะสร้างกิจวัตรที่มีประสิทธิภาพต่ำเมื่อนักพัฒนาไม่เข้าใจว่าคำค้นหาของพวกเขาทำงานกับ ORM และ SQL ที่แปลเป็นอย่างไร
การมีชั้นข้อมูลที่ทำงานร่วมกับหลายฐานข้อมูลอาจเป็นประโยชน์ ไม่ใช่คนที่ฉันต้องพึ่งพาบ่อยขนาดนั้น
ในท้ายที่สุดฉันต้องขอย้ำอีกครั้งว่าจากประสบการณ์ของฉันหากคุณไม่ได้ใช้คุณสมบัติการสืบค้นขั้นสูงของ ORM ของคุณมีตัวเลือกอื่น ๆ ที่ช่วยแก้ปัญหาที่เหลือด้วยการเรียนรู้ที่น้อยลงและรอบ CPU น้อยลง
โอ้ใช่นักพัฒนาบางคนคิดว่าการทำงานกับ ORM เป็นเรื่องสนุกดังนั้น ORM จึงเป็นสิ่งที่ดีจากมุมมองที่ทำให้นักพัฒนาของคุณมีความสุข =)
เร่งการพัฒนา ตัวอย่างเช่นการกำจัดโค้ดซ้ำ ๆ เช่นการแมปฟิลด์ผลลัพธ์คิวรีกับสมาชิกออบเจ็กต์และในทางกลับกัน
รองรับการห่อหุ้ม OO ของกฎทางธุรกิจในชั้นการเข้าถึงข้อมูลของคุณ คุณสามารถเขียน (และแก้จุดบกพร่อง) กฎทางธุรกิจในภาษาที่คุณต้องการในแอปพลิเคชันของคุณแทนที่จะใช้ภาษาทริกเกอร์ที่ไม่เป็นระเบียบและภาษากระบวนงานที่จัดเก็บไว้
การสร้างรหัสสำเร็จรูปสำหรับการดำเนินการ CRUD พื้นฐาน เฟรมเวิร์ก ORM บางตัวสามารถตรวจสอบข้อมูลเมตาของฐานข้อมูลได้โดยตรงอ่านไฟล์การแมปข้อมูลเมตาหรือใช้คุณสมบัติคลาสที่ประกาศ
คุณสามารถย้ายไปยังซอฟต์แวร์ฐานข้อมูลอื่นได้อย่างง่ายดายเนื่องจากคุณกำลังพัฒนาไปสู่นามธรรม
เพื่อให้โมเดลวัตถุและโมเดลการคงอยู่ของคุณตรงกัน
ความสุขในการพัฒนา IMO ORM แยกสิ่งที่เป็นโลหะเปลือยจำนวนมากที่คุณต้องทำใน SQL ช่วยให้ฐานรหัสของคุณเป็นเรื่องง่าย: มีไฟล์ต้นฉบับให้จัดการน้อยลงและการเปลี่ยนแปลงสคีมาไม่ต้องใช้เวลาดูแลรักษา
ตอนนี้ฉันกำลังใช้ ORM และมันช่วยเร่งพัฒนาการของฉัน
เพื่อลดความซ้ำซ้อนของแบบสอบถาม SQL แบบธรรมดา
เหตุผลที่ฉันกำลังพิจารณาคือหลีกเลี่ยงโค้ดที่สร้างขึ้นจากเครื่องมือ DAL ของ VS2005 (การทำแผนที่สคีมา, TableAdapters)
DAL / BLL ที่ฉันสร้างขึ้นเมื่อหนึ่งปีที่แล้วใช้งานได้ดี (สำหรับสิ่งที่ฉันสร้างไว้) จนกระทั่งมีคนอื่นเริ่มใช้มันเพื่อใช้ประโยชน์จากฟังก์ชันที่สร้างขึ้นบางอย่าง (ซึ่งฉันไม่รู้ว่ามีอยู่ที่นั่น)
ดูเหมือนว่าจะให้โซลูชันที่ใช้งานง่ายและสะอาดกว่าโซลูชัน DAL / BLL จากhttp://wwww.asp.net
ฉันกำลังคิดที่จะสร้างตัวสร้างโค้ด C # DAL ของคำสั่ง SQL ของตัวเอง แต่ ORM ดูเหมือนจะเป็นโซลูชันที่หรูหรากว่า
การรวบรวมและการทดสอบแบบสอบถาม
เมื่อเครื่องมือสำหรับ ORM ดีขึ้นการตรวจสอบความถูกต้องของคำค้นหาของคุณจะง่ายขึ้นเร็วขึ้นผ่านการรวบรวมข้อผิดพลาดและการทดสอบเวลา
การรวบรวมคำค้นหาของคุณช่วยให้นักพัฒนาพบข้อผิดพลาดได้เร็วขึ้น ขวา? ขวา. การคอมไพล์นี้เกิดขึ้นได้เนื่องจากขณะนี้นักพัฒนากำลังเขียนคิวรีในโค้ดโดยใช้อ็อบเจ็กต์หรือโมเดลทางธุรกิจแทนที่จะเป็นสตริงของ SQL หรือ SQL เช่นคำสั่ง
หากใช้รูปแบบการเข้าถึงข้อมูลที่ถูกต้องใน. NET จะง่ายต่อการทดสอบตรรกะของแบบสอบถามกับหน่วยความจำ การดำเนินการนี้จะทำให้การทดสอบของคุณเร็วขึ้นเนื่องจากคุณไม่จำเป็นต้องเข้าถึงฐานข้อมูลตั้งค่าข้อมูลในฐานข้อมูลหรือแม้แต่ปั่นบริบทข้อมูลแบบเต็ม [แก้ไข] นี่ไม่เป็นความจริงอย่างที่ฉันคิดว่าเป็นหน่วย การทดสอบในหน่วยความจำสามารถนำเสนอความท้าทายที่ยากจะเอาชนะได้ แต่ฉันยังพบว่าการทดสอบการบูรณาการเหล่านี้เขียนง่ายกว่าปีก่อน ๆ [/ EDIT]
วันนี้มีความเกี่ยวข้องมากกว่าเมื่อไม่กี่ปีก่อนเมื่อคำถามถูกถาม แต่นั่นอาจเป็นกรณีของ Visual Studio และ Entity Framework เท่านั้นที่ประสบการณ์ของฉันอยู่ ปลั๊กอินสภาพแวดล้อมของคุณเองถ้าเป็นไปได้
คัดลอก sql ออกไป 95% ของเวลาดังนั้นทุกคนในทีมไม่จำเป็นต้องรู้วิธีการเขียนแบบสอบถามเฉพาะฐานข้อมูลที่มีประสิทธิภาพสูง
ฉันคิดว่ามีจุดดีหลายอย่างที่นี่ (ความสามารถในการพกพาความสะดวกในการพัฒนา / การบำรุงรักษามุ่งเน้นไปที่การสร้างแบบจำลองธุรกิจ OO เป็นต้น) แต่เมื่อพยายามโน้มน้าวลูกค้าหรือผู้บริหารของคุณทุกอย่างจะลดลงอยู่ที่จำนวนเงินที่คุณจะประหยัดได้โดยใช้ ORM .
ทำการประมาณค่าบางอย่างสำหรับงานทั่วไป (หรือแม้แต่โครงการขนาดใหญ่ที่อาจจะเกิดขึ้น) แล้วคุณจะ (หวังว่า!) จะได้รับข้อโต้แย้งบางประการสำหรับการเปลี่ยนที่ยากที่จะเพิกเฉย
ระดับ. net โดยใช้แม่แบบ code smith
http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1
ทำไมโค้ดบางอย่างที่สามารถสร้างขึ้นได้เช่นกัน
โน้มน้าวพวกเขาว่าคุณจะประหยัดเวลา / เงินเท่าใดเมื่อมีการเปลี่ยนแปลงเข้ามาและคุณไม่จำเป็นต้องเขียน SQL ของคุณใหม่เนื่องจากเครื่องมือ ORM จะทำสิ่งนั้นให้คุณ
ฉันคิดว่าข้อเสียอย่างหนึ่งคือ ORM จะต้องมีการอัปเดต POJO ของคุณ ส่วนใหญ่เกี่ยวข้องกับสคีมาความสัมพันธ์และแบบสอบถาม ดังนั้นสถานการณ์ที่คุณไม่ควรทำการเปลี่ยนแปลงในโมเดลอ็อบเจ็กต์อาจเป็นเพราะมันถูกแชร์ระหว่างโปรเจ็กต์หรือ b / w ไคลเอนต์และเซิร์ฟเวอร์ ดังนั้นในกรณีเช่นนี้คุณจะต้องแบ่งมันเป็นสองระดับซึ่งจะต้องใช้ความพยายามเพิ่มเติม
ฉันเป็นนักพัฒนาแอนดรอยด์และอย่างที่คุณทราบดีว่าแอปบนอุปกรณ์เคลื่อนที่มักมีขนาดไม่ใหญ่นักดังนั้นความพยายามเพิ่มเติมในการแยกโมเดลที่แท้จริงและโมเดลที่ได้รับผลกระทบจาก orm ดูเหมือนจะไม่คุ้มค่า
ฉันเข้าใจว่าคำถามนั้นเป็นคำถามทั่วไป แต่แอพมือถือก็อยู่ในร่มทั่วไปเช่นกัน