วันพุธที่ 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


2 comments:

ณัฐพล ทวีศรีสวัสดิ์ กล่าวว่า...

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

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

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