Posts

Showing posts from 2017

[Java] การเชื่อมต่อ database ผ่าน Datasource

Image
          การเขียนโปรแกรมเชื่อมต่อฐานข้อมูลนอกจากจะเขียนต่อโดยตรง  การเชื่อมต่อ MySQL Database  ซึ่งเป็นการเชื่อมต่อที่ไม่ใช่วิธีที่ดีนัก เพราะเรา (developer) จะต้องรายละเอียดต่างๆ ตั้งแต่ยี่ห้อฐานข้อมูล, host, SID, username, password ไว้ในแอปฯ ของเรา หรือจะเรียกว่า "hard-code" ก็ไม่ผิด //Legacy Way Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/sys", "root", "1234");           สังเกตว่าเราจะต้องระบุ parameter กันไปโต้ง ๆ แบบนี้ ไม่ว่าจะเป็น admin หรือไม่ ก็สามารถนำ connection นี้ไปเชื่อมต่อฐานข้อมูลได้ทันที           การเชื่อมต่อผ่าน datasource จะเป็นการผลักภาระให้ Application Server เป็นตัวจัดการ ซึ่งเรา (admin) จะต้องตั้งค่ารายละเอียดที่จำเป็นในการเชื่อมต่อฐานข้อมูลเข้าไป ซึ่งทำเพียงครั้งเดียว จากนั้นเขียนโปรแกรมเพื่อทำการ lookup ผ่านชื่อที่ตั้งไว้ โดยในภาพตัวอย่างเป็นการสร้าง datasource บน Wildfly Application Server   *AppServ...

[Java] try-with-resouces กับการคืนทรัพยากรบน Java 7

          Java 7 มี syntax ที่เราอาจไม่ได้รู้สึกตัวว่ามันมีอยู่ คราวนี้เราก็จะมาทำความรู้จัก try-with-resources ที่เป็นตัวช่วยสำคัญในการยุ่งกับ resources ต่าง ๆ เช่น การเชื่อมต่อฐานข้อมูล(Database connection) การเขียน-อ่านไฟล์ เป็นต้น           ปกติแล้ว การเขียนโปรแกรมขั้นพื้นฐาน ก็เราได้รู้จักการใช้งาน object ซึ่งก็จะมี lifetime ของตัวมันเองแต่ก่อน การยุ่งกับ resources เราจำเป็นจะต้องเขียนเปิด-ปิดการใช้งานเอง จุดนี้ try-with-resources จะเข้ามาช่วยให้เราเขียนโค้ดง่ายขึ้น การเชื่อมต่อฐานข้อมูลโดยไม่ใช้ try-with-resourcs   ถ้าเขียนตามจินตนาการขั้นแรกสุด เปิดใช้งาน resources อย่าลืมปิดเมื่อใช้เสร็จ Connection con = getConnection(); ... .. . con.close()           แต่ แต่ แต่ !   การเรียกใช้งาน resources ส่วนใหญ่จะพ่วงกันมาหลายตัว และจะบังคับให้เราเขียน try-catch เพื่อจัดการบางอย่างเมื่อเกิดปัญหาขึ้น ซึ่งเราจะต้องตามปิด resources ทั้งเคสที่ทำงานถูกต้องและไม่ถูกต้องของทุกตัว Connection con = nu...

Facebook Comment

Recent Posts

Popular post of 7 days

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Portal คืออะไรกันนะ???

Deeplink, Universal Links คืออะไร ทำงานร่วมกับ Mobile App ได้ยังไง

Popular

Portal คืออะไรกันนะ???

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

Port Forwarding สำหรับคนใช้ AIS Fibre

เรื่องของ ++i กับ i++

Android Auto & Apple Carplay คืออะไร ใช้งานยังไง

Deeplink, Universal Links คืออะไร ทำงานร่วมกับ Mobile App ได้ยังไง

วิธีการสมัคร Apple Developer Program และ Enterprise Program ฉบับลงมือเอง

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

ทดสอบ Mobile App แบบ Automated ด้วย Appium ทำยังไงกันนะ