Skip to content

Julfaninurdinnst/Simple-Restfull-api-SpringBoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Master Karyawan REST API

Aplikasi REST API untuk manajemen data karyawan dan jabatan menggunakan Spring Boot, MySQL, dan Hibernate dengan HQL.

Teknologi yang Digunakan

  • Java 24
  • Spring Boot 3.5.3
  • Spring Data JPA dengan Hibernate
  • MySQL Database
  • Lombok
  • Maven

Fitur

  • CRUD operasi untuk data karyawan dan jabatan
  • Pencarian karyawan berdasarkan nama, jabatan, gender, dan nomor induk
  • Pencarian jabatan berdasarkan kode dan nama
  • Semua query menggunakan HQL (Hibernate Query Language)
  • Format respons API yang konsisten
  • Penanganan kesalahan yang baik
  • Soft delete untuk data karyawan dan jabatan

Struktur Database

Aplikasi ini menggunakan dua tabel utama:

Tabel T1_POSITION

Field Tipe Data Keterangan
ID NUMBER Primary Key, Auto Increment
CODE VARCHAR(50) Kode jabatan
NAME VARCHAR(100) Nama jabatan
IS_DELETE NUMBER Flag untuk soft delete (1: dihapus, 0: aktif)

Tabel T2_EMPLOYEE

Field Tipe Data Keterangan
ID NUMBER Primary Key, Auto Increment
NAME VARCHAR(100) Nama karyawan
BIRTH_DATE DATE Tanggal lahir karyawan
POSITION_ID NUMBER Foreign Key ke tabel T1_POSITION
ID_NUMBER NUMBER Nomor induk pegawai
GENDER NUMBER Jenis kelamin (1: Pria, 2: Wanita)
IS_DELETE NUMBER Flag untuk soft delete (1: dihapus, 0: aktif)

Struktur Proyek

Proyek ini mengikuti arsitektur MVC (Model-View-Controller):

  • Model: Representasi data dan logika bisnis
  • Repository: Akses data menggunakan HQL
  • Service: Logika bisnis dan transaksi
  • Controller: Endpoint API REST

Setup Database

  1. Buat database MySQL dengan nama master_karyawan
  2. Konfigurasi koneksi database di application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/master_karyawan
spring.datasource.username=root
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.properties.hibernate.format_sql=true
spring.sql.init.mode=always
spring.jpa.defer-datasource-initialization=true

Menjalankan Aplikasi

  1. Clone repositori
  2. Pastikan MySQL server berjalan
  3. Build dan jalankan aplikasi:
mvn clean install
mvn spring-boot:run

Aplikasi akan berjalan di http://localhost:8080

API Endpoints

Karyawan API

Metode URL Deskripsi
GET /api/karyawan Mendapatkan semua karyawan aktif
GET /api/karyawan/{id} Mendapatkan karyawan berdasarkan ID
GET /api/karyawan/search/name?name={name} Mencari karyawan berdasarkan nama
GET /api/karyawan/search/position?positionId={positionId} Mencari karyawan berdasarkan ID jabatan
GET /api/karyawan/search/gender?gender={gender} Mencari karyawan berdasarkan gender (1: Pria, 2: Wanita)
GET /api/karyawan/search/idNumber?idNumber={idNumber} Mencari karyawan berdasarkan nomor induk
POST /api/karyawan Membuat karyawan baru
PUT /api/karyawan/{id} Mengupdate karyawan yang ada
DELETE /api/karyawan/{id} Menghapus karyawan (soft delete)

Jabatan API

Metode URL Deskripsi
GET /api/positions Mendapatkan semua jabatan aktif
GET /api/positions/{id} Mendapatkan jabatan berdasarkan ID
GET /api/positions/code/{code} Mendapatkan jabatan berdasarkan kode
GET /api/positions/search?name={name} Mencari jabatan berdasarkan nama
POST /api/positions Membuat jabatan baru
PUT /api/positions/{id} Mengupdate jabatan yang ada
DELETE /api/positions/{id} Menghapus jabatan (soft delete)

Format Request dan Response

Format Request

Contoh Request untuk Membuat Karyawan Baru (POST /api/karyawan)

{
  "name": "John Doe",
  "birthDate": "1990-01-01",
  "position": {
    "id": 1
  },
  "idNumber": 12345678,
  "gender": 1,
  "isDelete": 0
}

Contoh Request untuk Membuat Jabatan Baru (POST /api/positions)

{
  "code": "MGR",
  "name": "Manager",
  "isDelete": 0
}

Format Response

Semua response API menggunakan format yang konsisten:

{
  "success": true,
  "message": "Pesan sukses atau error",
  "data": {},
  "timestamp": "2023-09-20T12:34:56.789"
}

Contoh Response Sukses untuk Karyawan

{
  "success": true,
  "message": "Berhasil mengambil data karyawan",
  "data": {
    "id": 1,
    "name": "Yogi Lestari",
    "birthDate": "1990-02-14",
    "position": {
      "id": 1,
      "code": "SA",
      "name": "System Analyst",
      "isDelete": 0
    },
    "idNumber": 14021990,
    "gender": 1,
    "isDelete": 0
  },
  "timestamp": "2023-09-20T12:34:56.789"
}

Contoh Response Error

{
  "success": false,
  "message": "Karyawan dengan ID 999 tidak ditemukan",
  "data": null,
  "timestamp": "2023-09-20T12:34:56.789"
}

Data Master

Aplikasi ini diinisialisasi dengan data master berikut:

Data Master Jabatan (T1_POSITION)

ID CODE NAME IS_DELETE
1 SA System Analyst 0
2 BPS BPS 0
3 PRG Programmer 0
4 TEST Tester 0
5 HELP Helpdesk 0

Data Master Karyawan (T2_EMPLOYEE)

ID NAME BIRTH_DATE POSITION_ID ID_NUMBER GENDER IS_DELETE
1 Yogi Lestari 1990-02-14 1 14021990 1 0
2 Anggi Setiawan 1991-05-10 5 10051991 1 0
3 Rosiana 1993-04-20 3 20041993 2 0
4 Yudi Ismiaji 1994-01-11 4 11011994 1 0

Penggunaan HQL

Semua query database dalam aplikasi ini menggunakan HQL (Hibernate Query Language) sesuai dengan persyaratan. Contoh implementasi dapat dilihat di KaryawanRepository.java dan PositionRepository.java.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages