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

Spring Boot ตอนที่ 6 กับ Production Database

มาต่อกันที่ถ้าเราจะใช้ Database ที่เป็น External กันบ้างจะทำยังไงครับ
1. Config POM เหมือนกับ อันที่แล้ว เลย
 <dependency>  
      <groupId>org.springframework.boot</groupId>  
      <artifactId>spring-boot-starter-data-jpa</artifactId>  
 </dependency>  

2. เพิ่ม Library สำหรับ Connect Database ที่ต้องการ

3. ต่อไป Config เพิ่มใน application.properties ต่อไปเป็นตัวอย่างที่ใช้ประจำครับ มีเพิ่มเติมสามารถไปดูได้ที่ Spring Boot Reference ครับ
 spring.datasource.url=jdbc:mysql://localhost/springboot  
 spring.datasource.username=root  
 spring.datasource.password=password1  
 spring.datasource.driver-class-name=com.mysql.jdbc.Driver  
 spring.jpa.hibernate.ddl-auto=update  
 spring.jpa.open-in-view=true  
 spring.jpa.show-sql=true  
 spring.datasource.initialize=true
     - spring.datasource.url = URL ติดต่อ Database
     - spring.datasource.username = Username ติดต่อ Database
     - spring.datasource.password = Password ติดต่อ Database
     - spring.datasource.driver-class = Driver ต่อต่อ Database
     - ถ้าจะติดต่อผ่าน JNDI ให้ใช้ spring.datasource.jndi-name
     - spring.jpa.hibernate.ddl.auto =  กำหนดว่าจะสร้าง ลบ หรืออัพเดทก่อนไหม
     - spring.jpa.open-in-view = สำหรับให้สามารถดึงข้อมูลตอนอยู่บนหน้าจอได้ มันคือ SessionInView
     - spring.jpa.show-sql = จะให้เห็น SQL ไหม
     - spring.datasource.initialize ให้อ่านค่า data.sql

4. ตอนนี้ Spring Boot รู้ล่ะว่าใช้งาน Spring Data JPA
5. สร้าง 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;  
      }  
 }  

6. ลอง start ดูครับ จะเห็นว่ามีการสร้าง Table นี้ขึ้นมาให้เลย

7. ต่อไปสร้าง @Repository
 package tutorial.spring4.repositories;  
 import org.springframework.data.jpa.repository.JpaRepository;  
 import tutorial.spring4.entities.Author;  
 public interface AuthorRepository extends JpaRepository<Author, String> {  
 }  

8. สามารถใช้งานได้แล้ว ส่วนการใช้งาน Spring Data JPA เดี๋ยว ผมเพิ่มให้แยกส่วนนะครับ เพราะตรงส่วนนั้นก็เยอะเหมือนกัน

PS. ถ้าอยากให้มีการ Initialize ค่า สามารถใช้ data.sql สร้าง SQL Insert ก่อนได้ครับ โดยไว้ที่ src/main/resources ครับ

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