ตัวอย่างโปรเจ็กต์แบบ MVC ตอนที่ 7 (DAO)

ได้เวลาแก้ไขโค้ดแล้ว  Yo!Yo!  หลังจากที่เกริ่นเอาไว้จากตอนที่ผ่านมา เราจะเพิ่มส่วนของ DAO หรือ Data Access Object ลงไปในโปรแกรมของเราค่ะ

โค้ดเดิมใน Controller

จากโค้ดเดิมของเราในไฟล์ Controller ส่วนของ Constructor เรารับค่า Database เข้ามาด้วย ตอนนี้เราจะเปลี่ยนให้การทำงานเกี่ยวกับ Database ไปอยู่อีกส่วนหนึ่ง ที่เรียกว่า DAD และเราจะใช้งานคำสั่งต่าง ๆ ที่เกี่ยวข้องกับฐานข้อมูลผ่านทาง DAO แทน

 

Data Access Object คืออะไร?

หากแปรตามตัวเลยก็คือ ออบเจ็กต์ที่เราจะใช้ให้มันทำหน้าที่ในการเข้าถึงข้อมูล คือในส่วนของ Controller เราไม่อยากให้ Database มาข้องเกี่ยวกับมันโดยตรง เพราะถ้ามีการแก้ไขข้อมูล Database มันจะกระทบมาถึงส่วนของ Controller ด้วย เราสามารถแยกส่วนนี้ออกไปได้ ให้ไปอยู่ในส่วนของ Model ทั้งหมดเลย และเราจะใช้งาน Model ผ่าน DAO ในการเข้าถึงข้อมูลต่าง ๆ  ที่ต้องการแทน

 

สิ่งที่เราจะได้รับต่อมาก็คือ โค้ดที่ดูเรียบง่ายมากขึ้น เพราะ DAO จะปิดปังความซับซ้อนของโค้ดในส่วนของฐานข้อมูลเอาไว้ หน้าที่ของ Controller จะมีเพียงอย่างเดียวคือ อยากได้อะไรก็เรียกใช้เมธอดต่าง ๆ ของ DAO ได้เลย แล้ว DAO จะส่งทุก ๆ อย่างที่ Controller ต้องการมาให้ ^^

 

เราจะแก้โค้ดยังไง ?

จากโค้ดเดิมของเราในไฟล์ Database.java (เปิดไฟล์ขึ้นมาดูด้วยนะคะจะได้มองภาพออก 🙂 มีเมธอด Constructor ทำหน้าที่เชื่อมต่อกับฐานข้อมูล และมีเมธอด isInsert() ทำหน้าที่บันทึกข้อมูลลงตาราง แล้วก็ปิดการเชื่อมต่อฐานข้อมูลในตอนสุดท้าย เราจะแก้ไขโค้ดดังนี้

 

นำเมธอด IsInsert() ออกมาและเอาไปเขียนไว้ใน DAO แทน  การเพิ่มโค้ดในส่วนนี้เราจะแก้ไข 3 ไฟล์คือ

  1. แก้ไขเพิ่มเติมโค้ดใน Database.java ให้คืนค่าการเชื่อมต่อกลับมาด้วย
  2. แก้ไขวิธีการเรียกใช้งานใน Controller
  3. คลาส Main.java เปลี่ยนแปลงวิธีการเรียกใช้

 

และเพิ่มไฟล์ Java ลงไปใน Package ชื่อ com.mystou.m หรือส่วนของ Model จำนวน 2 ประเภท 2 ไฟล์ คือ

  1. ไฟล์ชนิด Interface ชื่อว่า: ContactsDAO.java
  2. ไฟล์ที่ Implements อินเตอร์เฟสมาใช้งาน ชื่อ: ContactsDaoImpl.java

ไปดูรายละเอียดกันค่ะ

 

โครงสร้างโปรเจ็กต์

Java-Basic-ง่ายนิดเดียว-MVC-7-1

 

สร้างไฟล์ DAO

สร้างไฟล์ Interface ชื่อ ContactsDAO.java มี 1 เมธอด ดังนี้

 

ต่อมาสร้างไฟล์ java class ธรรมดา ชื่อว่า ContactsDaoImpl.java เพื่อทำการ Implements อินเตอร์เฟส ContactsDAO.java มาเขียนโค้ดการทำงานจริง

 

แก้ไขไฟล์ Database.java

เมื่อเราย้ายเมธอด isInsert() ไปไว้ใน DAO แล้ว เราก็เพิ่มเมธอดที่ทำหน้าที่คืนค่าการเชื่อมต่อฐานข้อมูลเอาไว้ให้คลาสอื่น ๆ เรียกใช้ด้วย ดังต่อไปนี้

 

แก้ไขไฟล์ ContactsController.java

ในไฟล์นี้แก้ง่ายที่สุดเลยคะ ไม่ต้องคิดอะไรเลย เรียกใช้อย่างเดียว สรุปมีโค้ดที่เปลี่ยนแปลงแล้วดังต่อไปนี้ค่ะ

 

แก้ไขวิธี Run โปรแกรม

ในคลาส Main.java ทำการแก้ไขดังนี้

 

สรุป

DAO เข้ามาแยกการเชื่อมต่อระบบฐานข้อมูลออกไปจากส่วนของ Controller ทำให้ส่วนของ Model มี DAO เพิ่มเข้าไปด้วย มันจะทำหน้าที่รับการเชื่อมต่อฐานข้อมูลเข้ามา มีการใช้งานคำสั่ง SQL และเรียกใช้ไฟล์ต่าง ๆ ที่จำเป็นในการเตรียมข้อมูลไว้ให้ Controller

 

ตอนนี้ใน Controller รับแค่ DAO กับ View เข้ามาและควบคุมการทำงานตามเหตุการณ์ต่าง ๆ ที่ผู้ใช้งานกดปุ่มมาจาก View ถ้ายังนึกภาพไม่ออก ลองดูภาพข้างล่างนะคะ โปรเจ็กต์แรกในรูปแบบ MVC ของเรา ก็ขอจบลงเพียงเท่านี้ค่ะ 🙂

Java-Basic-ง่ายนิดเดียว-MVC-7-2

 

สามารถดาวน์โหลดโปรเจ็กต์ได้ที่

 


เรื่องที่เกี่ยวข้อง

MVC ตอนที่ 1 การดึงปุ่ม JButton มาทำงานที่ Controller

MVC ตอนที่ 2 การดึง JTextField มาทำงานที่ Controller

ตัวอย่างโปรเจ็กต์: รายชื่อผู้ติดต่อ

ตอนที่ 1 (ภาพรวม)

ตอนที่ 2 (ฐานข้อมูล)

ตอนที่ 3 (Model)

ตอนที่ 4 (View)

ตอนที่ 5 (Controller & Service)

ตอนที่ 6 (ทดสอบโปรแกรม)

ตอนที่ 7 (DAO)


 

ธมนวรรณ มณีจันทร์

ธมนวรรณ มณีจันทร์

|:- เราเชื่อมั่นว่าการเสียสละและการแบ่งปันจะทำให้โลกใบนี้สวยงามมากขึ้น ทุกๆ จุดเริ่มต้นของการเรียนรู้ นำไปสู่การเรียนรู้ถัดไป เว็บไซต์แห่งนี้ขอเป็นส่วนหนึ่งของการแบ่งปันความรู้ที่ไม่มีที่สิ้นสุด มาร่วมกันผลักดันโลกของเราให้หมุนไปพร้อมกับพลังแห่งความรักด้วยกันนะคะ :) >>> |:- About Me! -:|