ฉันได้ทำการค้นคว้าด้วยตัวเองและเข้าใจแนวคิดพื้นฐานแล้ว แต่ข้อมูลเชิงลึกบางอย่างสามารถรับได้จากประสบการณ์จริงเท่านั้น
อะไรคือข้อดีของ myBatis ที่จะทำให้คุ้มค่าในการเรียนรู้กรอบใหม่
คุณจะหลีกเลี่ยงการใช้งานในกรณีใด
ฉันได้ทำการค้นคว้าด้วยตัวเองและเข้าใจแนวคิดพื้นฐานแล้ว แต่ข้อมูลเชิงลึกบางอย่างสามารถรับได้จากประสบการณ์จริงเท่านั้น
อะไรคือข้อดีของ myBatis ที่จะทำให้คุ้มค่าในการเรียนรู้กรอบใหม่
คุณจะหลีกเลี่ยงการใช้งานในกรณีใด
คำตอบ:
พิจารณาสิ่งที่คุณพยายามที่จะบรรลุ โดยทั่วไปแล้ว รูปแบบการแยกการตอบแบบสอบถามคำสั่งทำงานได้ดีสำหรับโดเมนที่ซับซ้อน
สาเหตุก็คือคุณกำลังพยายามทำหนึ่งในสองสิ่งต่อไปนี้:
Hibernate ใช้งานได้ดีสำหรับกรณีที่ 1 ช่วยให้คุณสามารถสร้าง POJO และยืนยัน / อัปเดต มันทำได้อย่างรวดเร็วนอกจากโดเมนของคุณจะค่อนข้างใหญ่
myBatisยอดเยี่ยมสำหรับการสืบค้นคำค้น (กรณีที่ 2) ที่คุณต้องการคำตอบ ไฮเบอร์เนตจะพยายามโหลดกราฟวัตถุทั้งหมดและคุณจะต้องเริ่มปรับแต่งแบบสอบถามด้วยเทคนิค LazyLoading เพื่อให้ทำงานบนโดเมนขนาดใหญ่ได้ สิ่งนี้มีความสำคัญเมื่อเรียกใช้คิวรีการวิเคราะห์ที่ซับซ้อนที่ไม่ได้ส่งคืนวัตถุเอนทิตี Hibernate นำเสนอ SqlQuery และ bean Transformers ในกรณีนี้ด้วยประเภทเริ่มต้นขนาดใหญ่เช่น BigDecimal ในขณะที่ myBatis สามารถแมปกับ POJO ที่ไม่ใช่เอนทิตีได้ง่าย
ทั้งสองกรณีนี้เป็นความแตกต่างระหว่างคำสั่งที่คุณต้องการเปลี่ยนข้อมูลโดเมนและคำตอบที่คุณต้องการดึงข้อมูลบางอย่าง
ดังนั้นให้พิจารณาทั้งสองกรณีนี้และสิ่งที่แอปพลิเคชันของคุณทำ หากคุณมีโดเมนง่าย ๆ และเพียงดึงข้อมูลให้ใช้ myBatis หากคุณมีโดเมนที่ซับซ้อนและคงอยู่ให้ใช้ Hibernate หากคุณทำทั้งสองอย่างให้พิจารณาแนวทางไฮบริด นั่นคือสิ่งที่เราใช้ในโครงการของเราที่มีหลายพันหน่วยงานเพื่อให้อยู่ภายใต้การควบคุม ;)
MyBatis คือศูนย์กลางของ SQL มันจะเรียกคำสั่ง SQL และผลลัพธ์การแม็พ (ตาราง) ไปยังออบเจ็กต์ต้นไม้
ประโยชน์หลักคือไม่ใช่ออม มันไม่ได้แมปตารางกับวัตถุดังนั้นจะไม่ได้รับความต้านทานออร์มไม่ตรงกัน เหมาะสำหรับฐานข้อมูลที่ซับซ้อนหรือแบบดั้งเดิมหรือใช้คุณสมบัติ db เช่นขั้นตอนการจัดเก็บมุมมองและอื่น ๆ
มันค่อนข้างง่ายและง่ายต่อการเรียนรู้เหมาะกับทีมที่มีทักษะต่ำเพราะไม่จำเป็นต้องมีกูรูที่จำศีลอยู่ในหมู่พวกเขา
ดูที่ jpetstore 6 http://mybatis.org/spring/sample.html
ตั้งแต่คำถามหมายถึงการแสดงความคิดเห็นของฉันนี่คือสิ่งที่ฉันมีในใจเขียนมัน
ก่อนอื่นมาจากบริบทของคำถามเดิมของคุณ ในสถานการณ์อื่น ๆ ฉันสามารถให้คำแนะนำที่แตกต่าง จุดที่ทำให้ฉันแนะนำ MyBatis คือ:
... เราพบปัญหาด้านประสิทธิภาพ
เราตัดสินใจเลิกจำศีลในความโปรดปรานของ Jdbc ธรรมดาเพื่อให้ได้ประสิทธิภาพของฐานข้อมูล ...
ในหนึ่งในโครงการที่ผ่านมาทีมงานของเรากำลังพิจารณาที่จะย้ายจาก Hibernate ด้วยเหตุผลที่คุณอธิบาย คล้ายกับคุณเรากำลังจะเปลี่ยนไปใช้ JDBC แต่เพื่อนร่วมงานจากโครงการอื่นแนะนำ MyBatis ทีมตัดสินใจที่จะลองขณะที่ยังคง JDBC เป็นตัวเลือกสำรองในกรณีที่สิ่งต่าง ๆ ผิดพลาด
ในขณะนั้นฉันไม่รู้อะไรเกี่ยวกับ MyBatis แต่มีประสบการณ์เพียงพอกับ JDBC เพื่อให้แน่ใจว่ามันจะทำงาน อย่างไรก็ตามเรื่องนี้ฉันได้รับการสนับสนุนอย่างมากในการลองใช้ MyBatis เหตุผลหลักคือจากประสบการณ์ที่ผ่านมาของฉันจำนวนของรหัสสำเร็จรูปที่เราต้องเขียนกับ JDBC นั้นน่ากลัวมาก
อย่างไรก็ตามเราลอง MyBatis แล้วมันก็ทำงานได้ตามที่โฆษณาไว้ นั่นเป็นเหตุผลที่ฉันเขียนความคิดเห็นที่คุณถามเกี่ยวกับ
ในกรณีที่คุณคาดหวังว่าฉันจะให้ภาพรวมรายละเอียดของเทคโนโลยีหรืออย่างใดสรรเสริญมันเหนือกว่า - ขอโทษที่ฉันไม่สามารถทำเช่นนั้น ถ้าฉันทำได้ - ฉันได้เขียนไปแล้วในคำตอบแยกต่างหากสำหรับคำถามต้นฉบับของคุณแทนที่จะให้ความเห็นสั้น ๆ ฉันพูดถึงฉันไม่รู้อะไรเลยเกี่ยวกับ MyBatis เมื่อก่อน - ฉันยังมีความรู้เกี่ยวกับมันค่อนข้างน้อยขอโทษ การเปลี่ยนจากไฮเบอร์เนตดำเนินการโดยสมาชิกในทีมคนอื่น ๆ และไม่ได้ส่งผลกระทบต่อรหัสที่ฉันได้ทำ ฉันจำได้แค่ประเด็นสำคัญ (ตามที่ฉันได้แสดงความคิดเห็นของฉัน) ซึ่งก็คือ 1) MyBatis แก้ไขปัญหาที่เรามีกับ Hibernate, 2) มันไม่ได้แนะนำปัญหาของตนเองและ 3) อนุญาตให้เราหลีกเลี่ยงการเขียนรหัสสำเร็จรูป คาดว่าในกรณีที่ถ้าเราเปลี่ยนเป็น JDBC นั่นคือทั้งหมดที่
ไฮเบอร์เนตเป็นที่รู้จักกันดีในเรื่องเวทมนตร์มากเกินไปพฤติกรรมที่ไม่คาดคิด มีกรอบอื่น ๆ ออกมาซึ่งเน้นความเรียบง่ายมากกว่าและจะช่วยให้คุณสามารถควบคุมได้
myBatis เป็นหนึ่งในนั้นโครงการของฉันMentaBeanเป็นอีกหนึ่ง ฉันเขียนบทความในบล็อกที่อาจช่วยได้
ฉันใช้ Hibernate สำหรับการโหลดข้อมูลและโครงการแปลงข้อมูลเมื่อ 5 ปีที่แล้วโดยใช้ Hibernate 3 และฉันคิดว่ามันวิเศษมาก ฉันกำลังทำแอปพลิเคชันอีคอมเมิร์ซขนาดเล็กและฉันพยายามใช้ Hibernate 4 และฉันก็ผิดหวังอย่างมาก พวกเขาได้ลบเครื่องมือและรวมเข้ากับ IDE อย่างแน่นหนา ฉันลอง MyBatis แล้วฉันก็ไปทุกอย่างที่ทำงานในคืนเดียวและฉันก็พอใจมากกับการรวมเข้ากับแอปพลิเคชัน ฉันคิดว่าไฮเบอร์เนตกลายเป็นป่องเกินไปและฉันจะใช้ EJB 3 มากกว่าไฮเบอร์เนตในตอนนี้