Posts

Showing posts from June, 2018

[Java] รู้จัก Spring Boot ฉบับมือใหม่

Image
Spring Boot หน้าที่หลักๆ คือจัดเตรียมโปรเจคให้เรามี library ที่เกี่ยวข้องอย่างครบครัน และมี embedded application server ติดมาให้ เป็นประโยชน์ในการ test มากๆๆ

Spring Initializr เหมาะสำหรับผู้เริ่มต้นโปรเจค Spring Boot เป็นเว็บไซต์ที่จะช่วยสร้างโปรเจคอย่างง่ายขึ้นมา โดยจะต้อง download มาเป็น *.zip หรือในบาง editor ก็สามารถสร้างโปรเจคในลักษณะเดียวกันได้เลย(ไม่ต้องผ่านเว็บก็ได้) ในเคสนี้ผมลองสร้างผ่านเว็บครับ เอาแบบ clean สุดๆ ไม่ได้ใส่อะไรเพิ่มเลยนะครับ


โหลดมาแล้วจะเห็นว่าเป็น maven project ตามที่ได้เลือกไว้ และนี่คือสิ่งที่ maven dependency ดูดมาให้เรา
mvn dependency:tree[INFO] --- maven-dependency-plugin:3.0.1:tree (default-cli) @ SpringBoot2Tutorial --- [INFO] th.in.lordgift:SpringBoot2Tutorial:jar:0.0.1-SNAPSHOT [INFO] +- org.springframework.boot:spring-boot-starter:jar:2.0.0.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot:jar:2.0.0.RELEASE:compile [INFO] | | \- org.springframework:spring-context:jar:5.0.4.RELEASE:compile [INFO] | | +- org.springframe…

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

Image
Push Notification           Push Notification หรือ การแจ้งเตือน คือ การที่แอปพลิเคชันนำข้อมูลมาแสดงในแถบแจ้งเตือนของระบบปฏิบัติการนั้นๆ กำหนด ไม่ว่าจะเป็น Mobile(iOS, Android) หรือ Computer ทั่วไปซึ่ง modern browser ในปัจจุบันก็สามารถแสดงแถบแจ้งเตือนได้แล้ว


          เราสามารถแบ่งการแจ้งเตือนออกเป็น 2 แบบ ดังนี้
Local Notification            คือ การที่ app. แสดง notification เอง ไม่มีอะไรเกี่ยวข้องกับ server ใดๆ ปกติแล้วจะแยกได้อีก 2 แบบย่อย คือ แจ้งเตือนตามเวลาที่กำหนด และแจ้งเตือนเป็นรอบๆ เช่น แอปนาฬิกาปลุก แอปแจ้งเตือนนัดหมาย เป็นต้น

Remote Notification            คือ การที่ app. รับข้อมูลมาจาก server แบบไม่จำเป็นต้อง request ไปก่อน ตัวอย่างที่ยกมาได้ชัดที่สุดคงหนีไม่พ้น โปรแกรมแชท ต่างๆ ของเครื่องเรานี่แหละครับ

เมื่อเราส่งข้อความไปหาเพื่อน

          สิ่งที่คนทั่วไปเข้าใจ...

          สิ่งที่ developer ควรรู้

          จะเห็นว่า จริงๆ แล้ว mobile จะต้องเรียกไปที่ server เพื่อให้ server เป็นตัวจัดการข้อมูลก่อน จากนั้นก็ส่งของไปให้ push server เป็นตัวจัดการส่งไปที่เครื่องปลายทาง ซึ…

[Java] สร้าง Hibernate Entity ด้วยวิธี Reverse Engineering ผ่าน Maven

การสร้าง Hibernate Entity ผ่าน Eclipse (สร้าง Hibernate Entity ด้วยวิธี Reverse Engineering) นั้นอาจจะดูยุ่งยาก เพราะมีขั้นตอนค่อนข้างเยอะ อีกทั้งยังไม่สามารถ share code ร่วมกัน หรือจะเก็บไว้ใช้ในโปรเจคอื่นก็ลำบาก โพสนี้ผมจะมาแชร์วิธีการที่สะดวกมากขึ้น เพราะเราจะ generated Entity ด้วย maven กัน

          Maven ไม่ได้เป็นแค่ dependency สำหรับ library เท่านั้น แต่ยังมี dependency ประเภท plugin ทำให้เพิ่มความสามารถของ maven เข้าไปอีก(Maven Plugin) เช่น เราสามารถดึง application server มาใช้ทดสอบโดยไม่ต้องโหลดมาติดตั้งแยก (Wildfly Maven Plugin) หรือ เราจะทำ war file ที่มี configuration สำหรับ production แบบพร้อมใช้งาน (Maven WAR Plugin) เป็นต้น

          สำหรับโพสนี้เราจะมาใช้ Maven AntRun Plugin สำหรับ generate Hibernate Entity แบบ pure code กัน ไม่ต้องยุ่งกับเครื่องมือของ editor อะไรอีก และได้ใช้ความสามารถของ Hibernate Reverse Engineering ด้วย ทีนี้เราก็สามารถส่งต่อ config ไปใช้กันภายในทีม หรือจะเผื่อใช้ในโปรเจคอนาคตก็ได้เช่นกัน

ก่อนจะเริ่มทำตามตัวอย่าง อยากให้แน่ใจก่อนว่ารู้จั…

[Java] สร้าง Hibernate Entity ด้วยวิธี Reverse Engineering

Image
Hibernate ประกอบด้วยหลายส่วน ซึ่งผมได้เขียนไว้แล้วก่อนหน้านี้ (รู้จัก OR-Mapping และ Hibernate เบื้องต้น) ในโพสนี้เราจะมาสร้าง ORM ภาคปฏิบัติกัน **คำเตือน ภาพประกอบเยอะมาก**

          การ mapping ระหว่าง database กับ class นั้น เรารู้แล้วว่า Entity Class เป็นตัวกลางที่ตอบโจทย์การใช้งาน การที่เราจะสร้าง Entity Class ได้นั้น เราต้องรู้โครงสร้าง database ก่อน ซึ่งเราสามารถตั้งค่า connection และ generated Entity Class โดยอัตโนมัติได้ โดยวิธีการดังกล่าวเรียกว่าวิธีการทำ..

"Hibernate Reverse Engineering"
          Hibernate Reverse Engineering ยังมีหัวใจสำคัญอีกอย่างหนึ่งคือ การทำ Type Mapping เพื่อกำหนดว่าถ้าเจอ Database data type ต้องแปลงเป็น Java data type อะไร

Eclipse ยังคงเป็น editor ที่มีเครื่องมือในการสร้าง Hibernate Entity Class ที่ดีตัวหนึ่งอยู่ ถึงแม้ว่าตอนนี้ผมแทบจะหนีไปใช้ editor จากค่าย  JetBrains ถึงแม้ว่า IntelliJ IDEA สามารถสร้าง Entity Class ได้เช่นกัน แต่ปัญหาคือ Mapped Type จะถูกกำหนดไว้แล้ว (default) ซึ่งบางครั้งเราอาจไม่ได้ต้องการ type ข้างต…

[Java] รู้จัก OR-Mapping และ Hibernate เบื้องต้น

Image
Hibernate คือ Java library ที่เพิ่มความสะดวกสะบายในการใช้งาน database เป็นอย่างมาก เป็นที่รู้จักของ Java Developer เป็นอย่างดี อีกทั้งมี community กว้างขวางมาก ๆ แบบไม่ต้องกลัวว่าถ้าติดปัญหาจะถูกทิ้งให้โดดเดี่ยวเดียวดายกันเลย

     ORM           หรือ OR-Mapping หรือชื่อเต็มๆก็คือ Object-Relational Mapping เป็นเทคนิคการใช้ฐานข้อมูลผ่าน Object แทนการใช้ SQL ซึ่งเพิ่มความสะดวกมาก ๆ ให้เหล่าโปรแกรมเมอร์ ซึ่งบางคนก็เรียก Entity บางคนก็เรียก DTO (Data Transfer Object) สุดแล้วแต่ถนัดเลยครับ

          ปกติแล้วการใช้งาน Relational Database เราจะต้องรู้จัก TABLE, COLUMN เป็นคำคุ้นหูอยู่แล้ว ซึ่งแน่นอนว่า Class ที่จะนำมาใช้เป็นตัวแทนฐานข้อมูลนั้น ก็มีความใกล้เคียงกันด้วย (พื้นฐาน ต้องอย่าทิ้ง)

Relational DatabaseJava ClassTableClassColumnAttribute
ลองมาดูตัวอย่างเต็ม ๆ กัน

จากตัวอย่าง ผมตั้งข้อสังเกตให้ 3 อย่าง คือ
TABLE, COLUMN จะถูก mapping เข้ากับ class, attribute ผ่าน annotation data type มีความหมายอย่างเดียวกันแต่ไม่ใช่ตัวเดียวกันความสัมพันธ์ของ TABLE ถูกจัดให้เป็น attribute ที่มี data type ข…

Facebook Comment

Recent Posts

Popular

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

ความเร็วเน็ตที่แท้จริง Mbps MBps ???

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)

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

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

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

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

[Java] รู้จัก Maven ให้มากขึ้น เพื่อก้าวสู่ java professional

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

[Java] Spring Framework กับความสามารถ Dependency Injection