วันพุธที่ 10 มิถุนายน พ.ศ. 2558

Spring Boot ตอนที่ 5 Spring Boot กับ Database [แบบ Embeded]

     โดยปกติเวลาเราใช้ Spring เราก็จะใช้ hibernate ใช่ไหมครับในการติดต่อฐานข้อมูล ซึ่ง Spring Boot ก็มีมาให้โดยใช้ Spring Data JPA ในการติดต่อฐานข้อมูล
     ข้อดีของมันคืออะไร คือเราสามารถเขียนเป็นภาษาคนในการดึงข้อมูลได้เลย และตัวมัน provide iinterface หลายๆ อย่างให้พอสมควร
     ตัวอย่างการดึงข้อมูล findByFirstnameOrderByCreateDateDesc หมายถึงดึงข้อมูลจาก Column Name = firstname โดยดึงมาแล้วเรียงด้วย CreateDate แบบ Desc
     ต่อไปส่วนของ Spring Boot ได้เตรียมการติดต่อฐานข้อมูลแบบ Embedded Database ไว้แค่เราบอกว่าใช้ โดยมี H2, HSQL, Derby
     เรามาดูส่วนของการใช้งาน Embeded กันก่อนนะครับ ซึ่งถ้าจะใช้ External Database ก็แค่เพิ่ม config ใน application.properties เท่านั้น

1. เพิ่มข้อมูลใน pom.xml ว่าจะใช้ Spring-data-jpa กับจะใช้ Database อะไร
 <dependency>  
   <groupId>org.springframework.boot</groupId>  
   <artifactId>spring-boot-starter-data-jpa</artifactId>  
 </dependency>  
 <dependency>  
   <groupId>org.hsqldb</groupId>  
   <artifactId>hsqldb</artifactId>  
   <scope>runtime</scope>  
 </dependency>  
     - dependency อันแรกหมายถึงจะใช้ spring-data-jpa
     - dependency อันที่สองหมายถึงจะใช้กับ Hsql นะ

2. เรามาลองสร้าง Entity สร้างปกติเลยครับ
 package tutorial.spring4.entities;  
 import java.io.Serializable;  
 import javax.persistence.Column;  
 import javax.persistence.Entity;  
 import javax.persistence.Id;  
 import javax.persistence.Table;  
 @Entity  
 @Table(name = "AUTHOR")  
 public class Author implements Serializable {  
      @Id  
      @Column(name = "AUTHOR_CODE")  
      private String authorCode;  
      @Column(name = "FIRST_NAME")  
      private String firstname;  
      @Column(name = "LAST_NAME")  
      private String lastname;  
      public String getFirstname() {  
           return firstname;  
      }  
      public void setFirstname(String firstname) {  
           this.firstname = firstname;  
      }  
      public String getLastname() {  
           return lastname;  
      }  
      public void setLastname(String lastname) {  
           this.lastname = lastname;  
      }  
      public String getAuthorCode() {  
           return authorCode;  
      }  
      public void setAuthorCode(String authorCode) {  
           this.authorCode = authorCode;  
      }  
 }  

3. ถ้าจะใส่ค่าเริ่มต้นลงในฐานข้อมูลก็ใช้ data.sql ไว้ที่ src/main/resources ครับ เป็น sql Insert ข้อมูลลงฐานข้อมูลให้

4. สร้าง Repository ไว้ process กับฐานข้อมูล
 package tutorial.spring4.repositories;  
 import org.springframework.data.jpa.repository.JpaRepository;  
 import org.springframework.data.jpa.repository.support.JpaEntityInformation;  
 import tutorial.spring4.entities.Author;  
 public interface AuthorReporsitory extends JpaRepository<Author, String>{  
 }  

5. ตอนนี้ก็เรียกใช้งานได้แล้วครับ

References
Basic
1. Spring Boot ตอนที่ 1 มาทำความรู้จักกับ Spring Boot
2. Spring Boot ตอนที่ 2 Hello World
3. Spring Boot ตอนที่ 3 โครงสร้างของ Project
4. Spring Boot ตอนที่ 4 Spring Boot กับ Thymeleaf
5.Spring Boot ตอนที่ 5 Spring Boot กับ Database [แบบ Embeded]
6.Spring Boot ตอนที่ 6 กับ Production Database
7.Spring Boot ตอนที่ 7 Security
8.Spring Boot ตอนที่ 8 Testing


Related Posts:

  • Spring Boot ตอนที่ 7 SecuritySpring Boot ก็ใช้ Spring Security ครับ ซึ่งก็ทำง่ายมาก แต่หันมาใช้การ Config ผ่าน Annotation และก็เขียนคลาสหมดไม่ได้ใช้ XML แล้วครับ ซึ่งอาจจะดูแปลกตา… Read More
  • Spring Boot ตอนที่ 8 Testingต่อไปมาดูว่าเราจะเทสกันยังไงครับ ถ้าเป็น Unit Testing ไม่ใช่ส่วนของ Controller กับ Repository น่าจะเเขียนเทสได้เลยโดยไม่ต้องพึ่ง Spring-Test สกับพวก I… Read More
  • ทำให้ Spring Boot Reload บน Eclipseปกติเราจะรันผ่าน Command line โดยใช้ Maven รัน มาตอนนี้ลองรันผ่าน Eclipse กันบ้าง (ตัวอ่นก็ใช้ได้นะครับ) 1. จะรันเหมือน Java Class ปกติ ครับ โดยสั่งให… Read More
  • Spring Boot ตอนที่ 6 กับ Production Databaseมาต่อกันที่ถ้าเราจะใช้ Database ที่เป็น External กันบ้างจะทำยังไงครับ 1. Config POM เหมือนกับ อันที่แล้ว เลย <dependency> <groupId&g… Read More
  • Spring Boot ตอนที่ 9 มาสร้าง Banner กันมาสร้าง Banner ลงบน Application ตอนเรา Start กันครับ มันคือส่วนนี้ เราสามารถเปลี่ยนง่ายโดยการเพิ่ม banner.txt ไว้ที่ src/main/resources ครับ ก็จ… Read More

2 comments:

Unknown กล่าวว่า...

พอจะมีตัวอย่างคร่าวๆในการเรียกใช้งานบ้างรึป่าวครับ

Naphachara Rattanwilai กล่าวว่า...

@ณัฐพล ถ้าเรียกด้วย Spring Data JPA จะเรียกด้วยชื่อเลยครับ เช่น findById คือเรียกด้วยว่าจะหาจาก comlumn อะไรเลยครับ หรือถ้าอยาก Custom ให้ใช้ @NamedQuery ให้ใช้ครับ