Learn Spring Framework: Dasar Database dengan MySQL


06/09/2017 00:30:24 217 Web

Pembelajaran ini ialah mengenai bagaimana penanganan dasar database pada Spring Framework dimana RDBMS yang digunakan ialah MySQL. Ada beberapa hal yang harus diperhatikan yakni

  1. Menambahkan dependencies pada pom.xml
  2. Membuat Database
  3. Membuat file application.properties untuk konfigurasi database
  4. Membuat Entitas
  5. Membuat Repository
  6. Membut Controller
  7. Membuat executable dan menjalankannya
  8. Testing

Dependencies

Terdapat dua dependencies yang harus ditambahkan agar dapat bekerja dengan Database MySQL yakni JPA Data dan MySQL Connector seperti berikut:

    <dependencies>
        ...
        <!-- JPA Data (We are going to use Repositories, Entities, Hibernate, etc...) -->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <!-- Use MySQL Connector-J -->

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        ...
    </dependencies>

Database

Langkah selanjutnya ialah membuat suatu database tempat menampung table. Untuk membuat database dapat menggunakan tools seperti PHPMyAdmin atau menggunakan Command Line Interface via CMD diwindows atau console/terminal di Linux dengan perintah:

$ mysql create database first_spring;

Pada sesi pembelajaran ini saya membuat suatu database dengan nama first_spring, serta username dan password yang digunakan ialah username=root dan password kosong.

application.properties

Membuat file konfigurasi yang berisi parameter konfigurasi database yang digunakan oleh Spring dengan nama src/main/resources/application.properties dengan kode konfigurasi sebagai berikut:

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/first_spring
spring.datasource.username=root
spring.datasource.password=

Entities

Setelah konfigurasi mengenai database selesai, selanjutnya ialah membuat entitas yang merepresentasikan skema table pada suatu database. Entitas yang dibuat sebagai contoh ialah src/main/java/User.java sebagai berikut:

package hello;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;

    private String name;

    private String email;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

Pada code diatas annotation @Entity memberi informasi bahwa entitas ini merupakan skema yang akan ditranslate pada suatu table pada database dengan nama table sesuai dengan nama Class dan kolom pada table ialah attribut dari class tersebut. Annotation @Id memberikan informasi bahwa kolom ini merupakan primary key, sedangkan annotation @GeneratedValue(strategy=GenerationType.AUTO) menyatakan bahwa nilainya di-generate secara otomatis atau di MySQL di-setting dengan auto_increment.

Repository

Setelah membuat Entitas selanjutnya ialah membuat suatu Repository yang digunakan sebagai interface yang digunakan untuk meng-query data pada database src/main/java/UserRepository.java dengan code:

package hello;

import org.springframework.data.repository.CrudRepository;

import hello.User;

public interface UserRepository extends CrudRepository<User, Long> {

}

Controller

Langkah selanjutnya ialah membuat controller src/main/java/UserController.java yang berisi logic untuk mengisi data dan menampilkan data table user via Entitas User:

package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import hello.User;
import hello.UserRepository;

@Controller
@RequestMapping(path="/user")
public class UserController {
    @Autowired
    private UserRepository userRepository;

    @GetMapping(path="/add")
    public @ResponseBody String addNewUser(@RequestParam String name, @RequestParam String email) {
        User user = new User();
        user.setName(name);
        user.setEmail(email);
        userRepository.save(user);
        return "save";
    }

    @GetMapping(path="/all")
    public @ResponseBody Iterable<User> getAllUser() {
        return userRepository.findAll();
    }
}

Membuat dan Menjalankan Executable

Membuat dan menjalankan executable kode java dengan menggunakan maven yakni ./mvnw spring-boot:run

Testing

Terdapat dua buah testing yakni

  1. Memasukan data dengan menjalankan http://localhost:8080/user/add?name=rofilde&email=rofilde@gmail.com, dan menghasilkan tulisan save
  2. Menampilkan data dengan menjalankan http://localhost:8080/user/all dan menghasikan luaran berupa data user dalam format json, contoh [{"id":1,"name":"rofilde","email":"rofilde@gmail.com"}]

Demikian pembelajaran dasar database ini mudahan dapat membantu. Terimakasih.