แสดงบทความที่มีป้ายกำกับ Spring Data JPA แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Spring Data JPA แสดงบทความทั้งหมด

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

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