: Model, Repository และ Service Concept
ถาม : จาก part 2 ยังมีการจำแนก package จำลองอย่างอื่นนอกจาก client กับ server อีกหรือไม่?
ตอบ : โดยหลักทั่วไปแล้ว package มักถูกสร้างขึ้นเป็นพื้นฐานเพื่อใช้เล่าเรื่องของกลุ่มคลาสใดๆอยู่แล้ว ซึ่งอยู่ที่ความคิดหรือ concept ในการสร้างคลาสต่างๆเป็นสำคัญ จากคำถามขอตอบว่ามีครับ และในที่นี้จะขอกล่าวถึง model, repository และ service เพิ่มเติมให้ด้วย
ถาม : อะไรคือ Model?
ตอบ : model ในที่นี้ก็ M ของ MVC นั่นแหละครับ (บางทีก็เรียกว่า shared) เป็น package สำหรับเก็บประดา POJO ที่จะกลายร่างเป็น Bean (ย้อนกลับไปอ่านที่ part 1 เรื่องของ POJO ถ้าจำไม่ได้นะ) เจ้า model package นี้จะเป็นตัวกลางที่ client และ server จะหยิบ bean ไปใช้ เพราะ bean นี้สำคัญมาก มันคือ data class ที่ทำหน้าที่รับหรือส่งค่าใดๆนั่นเอง
ถาม : อะไรคือ Repository?
ตอบ : concept ของ repository กว้างมาก ในที่นี้ผมหมายถึง package ที่รวบรวมคลาสที่ห่อหุ้มหรือเกี่ยวข้องกับ database เป็นหลัก
- ถ้ากล่าวถึง repository ในแง่ของคลาสที่ห่อหุ้ม Java Database Connectivity (JDBC) ไว้ก็จะเรียกให้ชัดว่า Data Access Object (DAO) หรือก็คือคลาสที่เป็นตัวกลางในการเชื่อมต่อข้อมูลระหว่างฐานข้อมูลกับส่วนอื่นของโปรแกรมของเรา ยกตัวอย่างเช่น
ส่วน server เรียกไปยัง service ทำโน่นนี่นั่นก่อน จากนั้น service เรียกไปยัง dao โดยที่ dao ยิง sql ไปกระทำกับ database อีกที และในทางกลับกันหรือหลังจากนั้น สมมติว่า dao ขอข้อมูลหนังสือทุกเล่มจาก database ได้แล้วก็จะส่งข้อมูลนี้กลับไปยัง service เพื่อทำโน่นนี่นั่น เมื่อเรียบร้อยแล้วจึงกลับไปหา server เป็นต้น
- ถ้ากล่าวถึง repository ในแง่ของคลาสที่ทำหน้าที่แทนความสำพันธ์ของฟิลด์ใน database ก็จะเรียกให้ชัดว่า Entity (แน่นอนว่าหนึ่ง entity เกี่ยวข้องกับฟิลด์ได้มากกว่าหนึ่งตาราง หรือทั้งตารางคือหนึ่ง entity ก็ได้)
ถาม : อะไรคือ Service?
ตอบ : มันคือคลาสบริการที่ server จะเรียกมาใช้งาน คลาสจำพวก service ต้องทำหน้าที่เฉพาะด้านมากๆ เช่น การเงิน, การขนส่ง, การคำนวณภาษี, การจัดการทรัพยากรบุคคล และอื่นๆ ในที่นี้ service จะเรียกใช้ repository เพื่อกระทำกับข้อมูลในรูปแบบต่างๆ แล้วส่งผลลัพธ์ในรูปของ bean กลับไปยัง server
ถาม : งั้นอะไรคือ Bean?
ตอบ : เจ้า bean ก็คือ POJO class (จาวาคลาสธรรมดา) ที่ถูกกำหนดให้มีระเบียบหรือกติกาดังนี้ต่อเติมเข้าไป
- จาวาคลาสธรรมดานั้นต้องมี default constructor เพื่อให้ประดา framework ต่างๆนำมาสร้างเป็น object ได้ง่าย
- จาวาคลาสธรรมดานั้นต้องมี accessible method หรือการเข้าถึงประเภท get, set, is (สำหรับชนิด boolean) ให้เข้าถึงคุณลักษณะ (attributes) ของมันจากภายนอก
- จาวาคลาสธรรมดานั้นควรที่จะทำ serializable ได้ เพื่อให้ประดาโปรแกรม application framework สามารถนำมันไปบันทึกหรือเรียกใช้โดย virtual machine ที่เป็นอิสระจาก platform ใดๆ
*** อ่านเพิ่มเติม https://en.wikipedia.org/wiki/JavaBeans
อย่างว่าล่ะครับ ใช้ framework ก็คือการศึกษาความคิด หรือก็คือ concept ที่เขาคิด ดังนั้นหากไม่เข้าใจความคิด ก็ยากที่จะเข้าใจ framework
และสำหรับ Spring Framework หัวใจของมันก็คือการใช้ Autowired กับ Dependency Injection (รู้แต่ว่าฉีด no config)
ไว้ต่อที่ part 4 แล้วกันนะ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น