เนื่อหา สาระ..มากมาย ที่นี่ --คลิกเลย--

วันอาทิตย์ที่ 19 ตุลาคม พ.ศ. 2551

JDBC คืออะไร

JDBC คืออะไร
JDBC คือ ตัวเชื่อมต่อระหว่างโปรแกรมกับฐานข้อมูลโครงสร้างของ JDBCเป็นกลุ่มอินเทอร์เฟซของจาวาที่เรียกว่า ไดรเวอร์ (Driver) ฐานข้อมูลแต่ละประเภทก็มีไดรเวอร์ต่างชนิดกันออกไป แต่เราไม่จำเป็นต้องรู้ถึงโครงสร้างของฐานข้อมูลที่เราต้องการจะติดต่อ เพียงแค่รู้ชนิดของไดรเวอร์ที่ใช้ในฐานข้อมูลชนิดนั้นก็พอเมื่อ JSP ต้องการติดต่อกับฐานข้อมูล ก็จะทำผ่านทาง JDBC APIและ JDBC Driver Manager ส่วนไดรเวอร์จะเป็น ODBC’ Oracle’ Sybaseหรือฐานข้อมูลชนิดอื่นก็ได้ สำหรับไดรเวอร์ของฐานข้อมูลอื่น ๆ นั้น ต้องติดตั้งเอง
วิธีการก็คือเมื่อได้ไดรเวอร์มาแล้ว (ไดรเวอร์จะอยู่ในรูปแบบของคลาสหรือแพ็กเกจ)ก็นำไดรเวอร์มาติดตั้งในไดเรกทอรีที่มีอยู่ในตัวแปร classpath สำหรับในบทนี้จะใช้ไดรเวอร์ ODBC ซึ่งมีอยู่แล้วในคลาส “java.sql.*” สามารถใช้ได้เลย
JDBC ( Java Database Connectivity) คือ Java API ที่ใช้สำหรับตีความคำสั่งSQL โดยประกอบด้วยชุดของ classes และ interfaces ที่เขียนด้วยโปรแกรมภาษา Java ตัว JDBC นี้เป็นAPI มาตรฐาน สำหรับการพัฒนาระบบฐานข้อมูล และทำให้มีความเป็นไปได้ในการเขียนโปรแกรมใช้งานเกี่ยวกับฐานข้อมูลด้วย JavaAPI เพียงอย่างเดียว
การใช้ตัว JDBC นี้ทำให้ง่ายในการส่งคำสั่ง SQL ให้กับระบบฐานข้อมูลชนิดต่างๆในรูปแบบเดียวกัน นั่นคือ JDBC API จะไม่บังคับให้เขียนโปรแกรมตัวหนึ่งเพื่อใช้กับฐานข้อมูลของ Sybase และอีกโปรแกรมหนึ่งสำหรับฐานข้อมูลของOracle และอีกหนึ่งโปรแกรมสำหรับฐานข้อมูลของ Informix และอีกหลายโปรแกรมสำหรับฐานข้อมูลชนิดต่างๆเราสามารถเขียนโปรแกรมโดยใช้ JDBC API เพียงโปรแกรมเดียว และโปรแกรมนั้นจะสามารถส่งคำสั่ง SQL ไปยังฐานข้อมูลชนิดต่างๆนั้นได้ และการเขียนโปรแกรมโดยใช้ภาษา Java นี้คุณก็ไม่ต้องกังวลว่าจะต้องเขียนโปรแกรมอีกหลายตัวเพื่อนำไปใช้กับคอมพิวเตอร์ที่อยู่บนplatform ชนิดต่างๆ เลย ในการรวมตัวกันระหว่าง Java และ JDBC นี้ ทำให้ผู้เขียนโปรแกรมสามารถเขียนโปรแกรมเพียงหนึ่งโปรแกรมแล้วสามารถนำไปใช้ได้ในทุกๆ แห่งที่ต้องการ
Java ที่กำลังแข็งขัน มีความปลอดภัย ง่ายต่อการใช้ ง่ายต่อการเข้าใจและ ถ่ายโอนข้อมูลมาได้อย่างอัตโนมัติบนระบบเครือข่าย เป็นโปรแกรมภาษาที่ฉลาดมากที่จะใช้เขียนโปรแกรมที่ใช้จัดการฐานข้อมูลและตัว JDBC ก็เป็นทางเลือกที่ต้องการเพื่อจะให้โปรแกรมตัวนั้นสามารถติดต่อกับฐานข้อมูลไม่ว่าฐานข้อมูลชนิดนั้นจะเป็นชนิดใดก็ตาม
JDBC เป็นส่วนขยายของความสามารถที่ Java ทำได้ นั่นคือ เมื่อใช้Java และ JDBC API เราสามารถเผยแพร่ web page ที่มี java applet ที่ใช้ข้อมูลจาก ฐานข้อมูลที่อยู่ที่แห่งอื่นได้หรือในบริษัทต่างๆ ก็สามารถใช้ JDBC เพื่อติดต่อพนักงานเข้ากับฐานข้อมูลต่างๆไม่ว่าพวกเขาจะใช้เครื่องบน Windows, Macintosh หรือ UNIX ก็ตามบนระบบอินทราเน็ต และในขณะนี้ความต้องการของการเข้าถึงฐานข้อมูลที่ง่ายจาก Java กำลังมีเพิ่มสูงขึ้นเรื่อยๆ กับผู้เขียนโปรแกรมJava จำนวนมาก
ผู้ที่จัดการ MIS ชอบที่จะรวม Java และ JDBC เข้าด้วยกันเพราะมันทำให้การเผยแพร่ข้อมูลทำได้ง่ายและประหยัด ในบริษัทสามารถใช้ฐานข้อมูลที่ได้ติดตั้งไว้ก่อนแล้ว และการเข้าถึงข้อมูลก็ทำได้ง่ายแม้ว่ามันจะอยู่ในระบบจัดการฐานข้อมูลต่างชนิดกันก็ตาม ในการพัฒนาโปรแกรมตัวใหม่จะใช้เวลาน้อยลง การติดตั้งและการดูแลเรื่องversion ก็ง่ายมาก โดยผู้เขียนโปรแกรมสามารถเขียนหรือแก้ไขโปรแกรมเพียงโปรแกรมเดียวแล้วนำไปไว้ที่เครื่อง server จากนั้นทุกๆคนก็จะสามารถเข้าถึงข้อมูลแบบ version ล่าสุดได้ทันที และสำหรับธุรกิจบริการข้อมูลการขาย Java และ JDBC เป็นหนทางที่ดีที่สุดที่จะนำเสนอข้อมูลที่แก้ไขล่าสุดให้กับลูกค้าข้างนอกของตน


ลักษณะที่สำคัญของ JDBC
JDBC เป็น low-level Interface ซึ่งสามารถเรียกใช้คำสั่ง SQL ได้โดยตรงซึ่งสามารถใช้งานได้อย่างมีประสิทธิภาพ,มีขนาดเล็กและง่ายต่อการใช้กว่าตัวติดต่อ Data Base ชนิดอื่น ๆ แต่ก็ได้มีออกแบบสำหรับใช้งานแบบ High-Level Interface ด้วย ซึ่ง High Level Interface คือ User Friendly ซึ่ง High-level API ของ JDBC ที่ถูกพัฒนาซึ่งมีดังนี้1. JDBC ต้องการคำสั่ง SQL ที่จะทำการส่งเป็น String ไปยัง Method ของภาษา Java ทำให้ Programmer สามารถใช้ตัวแปรในการรับส่งคำสั่ง SQL ได้2. มีการแปลง relation DataBase Table ไปเป็น Java Class ซึ่งเรียกว่า Object/Relational ซึ่งแต่ละแถวของ Table จะถูกแปลงไปเป็น Instant ของ Class และแต่ละ Column จะเป็นเหมือน attribute ของ Class ซึ่ง Programmer สามารถดำเนินการต่าง ๆ คล้ายด้วยว่า Table เป็น Class Class หนึ่ง ใน Java


ข้อดีของ JDBC
1. ใช้งานง่าย การตั้งค่าไม่ยุ่งยาก
2. สามารถทำงานร่วมกับภาษา Java ได้เป็นอย่างดี เพราะ Driver ที่เขียนขึ้นนั้นส่วนมากจะพัฒนาจากภาษา Java และมีการ compile เป็น class file ทำให้ใช้งานง่าย
3. สามารถติดต่อฐานข้อมูลได้เกือบทุกประเภท ซึ่งส่วนใหญ่จะเป็นฐานข้อมูลแบบเชิงสัมพันธ์
4. ไฟล์ Driver มีขนาดเล็กกะทัดรัด
5. สามารถใช้งานได้ทั้ง สถาปัตยกรรม แบบ Two-Tier และ Three-Tier
6. สามารถใช้งานได้หลายระบบปฏิบัติการ
7. เป็น low-level InterFace และสามารถใช้ High-level interface ด้วยถ้าต้องการ
8. การใช้งานจะเป็นเชิง Object-Oriented
9. Driver แต่ละตัวมีมาตรฐานใกล้เคียงกัน


การทำงานที่สำคัญของ JDBC
1. ทำการติดต่อกับ Data Base
2. สั่งคำสั่ง SQL ไปยัง Data Base
3. การับผลลัพธ์จากการใช้คำสั่ง SQL แล้วทำการประมวลผล
ตัวอย่าง นี้เป็นโปรแกรมที่ตัดมา เพื่อแสดงการทำงานทั้ง3 อย่างข้างต้น ดังนี้
Connection con = DriverManager.getConnection( "jdbc:odbc:wombat", "login", "password"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECTa, b, c FROM Table1"); while (rs.next()) { int x = getInt("a"); String s = getString("b"); float f = getFloat("c"); }


การรักษาความปลอดภัยของ JDBC ผู้พัฒนา JDBC นั้นควรจะพิจารณา
Ø ความน่าเชื่อถือของโปรแกรม
Ø ความน่าเชื่อถึงของ Java program เป็นไปตาม Java application และ Java appletsจากแหล่งข้อมูลที่เกี่ยวข้องนั้นความจะเป็นserver ที่เก็บรายละเอียดของการให้บริการของบริษัทของคุณหรือ Server หลักApplet สามารถที่จะถูกกำหนดด้วยรหัสลับที่แน่ใจได้ว่าสามารถที่จะdownload ได้อย่างสมบูรณ์
Ø ความไม่น่าเชื่อถึงของโปรแกรม
Ø ความไม่น่าเชื่อถือของโปรแกรมนั้นคือJava Applet ที่เข้า๔งได้ทาง Internet ความไม่น่าเชื่อถือของ Applet คือจะต้องไม่ยอมให Client เข้าถึงเช่นfliesystem ได้เป็นต้น ในอนาคต ความไม่น่าเชื่อถือของ Applet เป็นเพียงแค่การยอมรับการเชื่อมโยงได้กับ network กลับไปยังServer จากการ download


การเปรียบเทียบระหว่าง JDBC และ ODBC
Microsoft ODBC API สามารถใช้ Application ในการติดต่อกับ DataBase ได้เกือบทุกประเภทเช่นกัน มีคำถามว่าทำไมไม่ใช้ ODBC ในการติดต่อฐานข้อมูลในภาษา Java ซึ่งคำตอบก็คือ สามารถใช้ ODBC ในการติดต่อฐานข้อมูลกับ Java ได้ แต่จะเป็นการดีถ้ามีการใช้ JDBC-ODBC Bridge ซึ่งเป็นรูปแบบหนึ่งของ JDBC ซึ่งสามารถสรุปคำตอบคำถามนี้ได้ว่า
1. ODBC ไม่มีความสะดวกในการใช้งานได้โดยตรงจาก Java เพราะมีการใช้ C Interface ในการเรียกคำสั่งจาก Java แล้วแปลงเป็น code ภาษา C มีผลกระทบหลายเรื่อง เช่น Security implement,robustness ของ Application
2. ตัวแปรที่มีการแปลงจาก ODBC (API ไปเป็น Java API จะทำให้เกิดปัญหาขึ้น เช่น Java ไม่มี Pointer ในขณะที่ C มีการใช้งาน Pointer
3. ODBC ยากต่อการเรียนรู้ เพราะมีการผสมผสานคุณสมบัติง่าย ๆ และยาก ๆ เข้าไว้ด้วยกัน และมีการนำเอา option ต่าง ๆ มารวบรวมกันไว้โดยที่เราต้องศึกษา object ทั้งหมด ของ ODBC เพื่อที่ใช้คุณสมบัติแยกย่อยต่าง ๆ ไป แต่ JDBC มีการออกแบบมาทเพื่อการใช้งานให้ได้ง่าย จะมี option ต่างหากเพื่อใช้ในงานที่ยากต่างหาก ซึ่งอยู่ในส่วนของ Advanced Programmer จะต้องศึกษาต่อไปไป
4. Java และ JDBC จะมีการใช้งานร่วมกันได้เพราะต่างก็เขียนขึ้นมาด้วย Code ภาษา Java ซึ่งต่างจาก ODBC การจัดการ ODBC Driver ต้องมีการ ติดตั้งลงในทุก ๆ เครื่องที่มีการใช้งาน ในขณะที่ JDBC Driver มีการเขียนขึ้น ใน code ภาษา Java JDBC code จะถูกรวมอยู่ใน Application โดยอัตโนมัติ ซึ่งจะมีความปลอดภัยกับข้อมูลในการใช้งานในระบบ Network


สถาปัตยกรรมแบบ Two-Tier และ Three-Tier
JDBC สามารถเข้าถึงฐานข้อมูลทั้งแบบ Two - Tier และ Three - Tier ได้ถึงแม้จะใช้ระบบปฏิบัติการที่แตกต่างกันในการทำงานร่วมกัน
- Two Tier ModelJava applet หรือ Application สามารถติดต่อฐานข้อมูลได้โดยตรง ซึ่งมีความต้องการที่จะใช้ JDBC Driver ที่จะสามารถติดต่อกับระบบ DBMS ได้ ซึ่ง User สามารถสั่งคำสั่ง SQL ไปยัง Database และผลลัพธ์ที่ได้ก็จะถูกส่งกลับมายัง user ได้ซึ่ง Database และผลลัพธ์ผลลัพธ์ที่ได้ก็จะถูกส่งกลับมายัง user ได้ซึ่งฐานข้อมูล อาจจะอยู่คนละเครื่องกันกับ Application ซึ่งจะคล้ายการทำงานตามหลักของ Client/Server ซึ่งในขณะเครื่องที่ Application ทำงานอยู่เรียกว่า Client เครื่องที่เป็นDataBase จะเป็น Server,Network จะเป็น Internet ก็ได้
- Three Tier Modelคำสั่งจะถูกส่งไปยัง Middle-Tier ซึ่ง Middle-Tier จะส่งคำสั่ง SQL ไปยัง Data Base อีกครั้งหนึ่ง เมื่อมีการประมวลคำสั่ง SQL แล้วจะมีการสั่งผลลัพธ์กลับมายัง Middle-Tier จาก Middle-Tier จึงสั่งผลลัพธ์มายัง user อีกครั้งหนึ่ง ซึ่ง Middle Tier นี้สามารถจัดการคำสั่งควบคุมในการไป ประมวลผลข้อมูลมาเก็บไว้และแจกจ่ายไปยัง User ต่างๆ เมื่อมีการร้องขอใช้งาน อีกอย่างที่สำคัญคือ การทำงานที่ Middle-Tier นี้จะช่วยให้ง่ายต่อการใช้งานแบบ user-friendly มากที่สุด




ประเภทของ JDBC Driver
1. JDBC - ODBC Bridge
2. Native API partly-Java Driver
3. JDBC-Net Java Driver
4. Native-protocal pure Java Driver



1. JDBC-ODBC Bridge plus ODBC Driver เป็น Driver ของ JDBC ที่ใช้ในการติดต่อการทำงานผ่าน ODBC ซึ่งจะมีการใช้ ODBC ในการติดต่อกับฐานข้อมูลก่อนไม่ว่าจะเป็นในเครื่องเดียวกันหรือติดต่อผ่าน Server แล้วจึงใช้ JDBC ไปติดต่อกับ ODBC อีกครั้งหนึ่ง
2. Native-API partly-Java Driver สำหรับ Driver ประเภทนี้จะเปลี่ยน JDBC calls ไปเรียก Client API ของ Oracle ,Sysbase หรือ DBMS ตัวอื่น ๆ ซึ่งจะคล้ายสะพานเชื่อมต่อไปยัง ฐานข้อมูลอีก
3. JDBC-Net pure Java Driver: Driver ประเภทนี้จะเปลี่ยน JDBC calls ไปยัง DBMS - independent net protocal ซึ่งหลังจากการเปลี่ยนไปเป็น DBMS Protocal โดย Server ซึ่ง Server ตัวนี้สามารถติดต่อเข้ากับ Java Client ไปยัง Database หลายประเภทได้ซึ่งจะสามารถใช้งานผ่านทาง Internet และ Intranet
4. Native-protocal pure Java Driver : Driver ประเภทนี้จะเปลี่ยน JDBC call ไปเป็น network protocal ซึ่งจะถูกใช้โดย DBMS ซึ่งจะมีการใช้งานโดยมีการเรียกใช้งานโดยตรงจาก client ไปยัง DBMS Server
การใช้งาน JDBC การตั้งชื่อฐานข้อมูลบน Network
Javasoft นั้นออกแบบการใช้งานมาตรฐานการตั้งชื่อไว้เป็นแบบURL (Uniform Resource Locator) syntex พื้นฐานที่จะอธิบายถึฐานข้อมูลก็คือ jdbc:: ตัวอย่างฐานข้อมูล mydatabase บนhost cc2.cpe.ku.ac.th ,port 1234 ,โดยใช้ mSQL สำหรับการเข้าถึงทางNetworkjdbc:mSQL://cc2.cpe.ku.ac.th:1234/mydatabase
การประมวลผลการค้นหาข้อมูลและการได้มาซึ่งผลลัพท์ เมื่อได้ผลของการค้นหาข้อมูลโดยSQL จากการทำงานของ java.sql.Statementclass แล้วหลังจากการสถาปนาการเชื่อมโยงฐานข้อมูลจึงสร้างstatement และประมวลผลjava.sql.Statement stmt = conn.creatStatement();ResultSet r = stmt.executeQuery("SELECT a,b,c FROM Table1");ResultSet object r จะได้รับของมูลจากการค้นหาไว้ การกำหนดค่าให้จากfield ใน r โดยใช้ JDBC getxxxwhile (r.next){ int I = r.getInt("a");String s = r.getString("b");byte b[] = r.getByte("c");System.out.println("ROW = "+ I + " " + s + " " + b[0]);}
การใช้งาน แอพพลิเคชั่นเมื่อทำงานในระบบ ไคลเอนท์/เซอฟเวอร์นั้นสามารถเลือกใช้ได้หลายรูปแบบขึ้น อยู่กับลักษณะเฉพาะของงานแต่ละชนิดและขนาดของงานที่เลือกใช้ งานบางชนิดต้องติดต่อฐานข้อมูลขนาดใหญ่ แต่บางชนิดไม่จำเป็นต้องใช้ฐานข้อมูลขนาดใหญ่มานัก องค์ประกอบเหล่านี้มีส่วนเกี่ยวข้อง กับประสิทธิภาพของแอพพลิเคชั่นและผลลัพธ์ของงานที่ได้มา มีวิธีการแก้ปัญหาโดยแบ่งแอพพลิเคชั่น ออกเป็นโมดูลย่อย ให้ทำงานร่วมกัน แต่ละโมดูลทำงานตามหน้าที่ของตนเป็นอิสระจากโมดูลอื่นทำให้ง่าย ต่อการเปลี่ยนแปลงแก้ไขและบำรุงรักษา เรียกการทำงานแบบนี้ว่า " มัลติเทียร์" ซึ่ง พัฒนามาจาก "ทู-เทียร์" และใช้วิธีการเข้าถึงฐานข้อมูลโดยใช้ JDBCไดรเวอร์ ( Java Database Connectivity Driver ) ซึ่งแบ่งตามลักษณะการทำงานออกได้เป็น 4 แบบ ขึ้นอยู่กับว่าผู้ใช้จะเลือก



Top Ten Oracle JDBC Tips 10 tips ในการใช้ JDBC กับ Oracle ดังนี้
1. ใช้ JDBC Thin Driver ในการติดต่อ Oracle โดยตัว Thin driver นี้จะถูกสร้างด้วยภาษา java 100% และมีความเร็วในการทำงานมากกว่า OCI แต่ทาง Oracle ก้ยังแนะนำให้ใช้ OCI มากกว่า
2. กำหนดให้ auto-commit ของ connection ให้เป้น false เสมอ เพื่อประสิทะภาพการทำงานที่ดีกว่า
connection.setAutoCommit( false );
แต่จะต้องระวังการใช้งาน ซึ่งจะต้องใช้คู่กับ commit/rollback เสมอนะครับ
3. ใช้ Statement object กับ dynamic SQL statementเสมอ
4. ควรจะมี hellprt method/class สำหรับการจัดการ dynamic SQL statement เสมอ เช่นการจัดการเกี่ยวกับ escaping characters
5. ควรจะใช้ PreparedStatement Object เสมอ ยกเว้นกับ dynamic SQL statement เนื่องจากตัว preparedstatement object นี้มีความเร็วในการทำงานมากกว่า Statement object รวมทั้งยังช่วยจัดการปัญหาของ SQL Injection อีกด้วย
6. ควรที่จะใช้ PreparedStatement object ร่วมกับ Baching task ในการ Insert, Update ข้อมูลจำนวนมากๆ ซึ่งจะทำงานเหมือนการ run bacting process
7. ควรใช้ Oracle Locator method ในการ insert, update, select LOBs ( Large Objects )
8. SQL92 or Oracle PL/SQL block syntax ในการเรียกใช้ Store Procedure
9. ควรจะใช้ Object SQL ในการ transfer ข้อมูลจาก Java Object ( Value Object ) ไปยัง Table ใน Database
10. ควรที่จะทำการ tunning SQL Statement เสมอ

ไม่มีความคิดเห็น: