Penyimpanan Data Lokal


1. πŸ“– Pengertian Penyimpanan Data Lokal

https://images.openai.com/static-rsc-4/I8GjEZAJrcFZzMpQzKJv20cPpMQL-6HgSqYa0UoZTwmzzmqU-7dp7mAqCKAFBQ56NnpBH8zOq3VUBlXP7Xzl1zEneQzqQRJN_aofBt85CQZ0It49m8BiJZJ_yZoooufLH-kihmfoEauJmYrd7hjnhA3QZTdfJ8pA8bDarpmRMWLz8toDVJOACnlmLR4fEEtB?purpose=fullsize
https://images.openai.com/static-rsc-4/8cvd9u2VIHglST5xpltxzMluyuxip5vDRR-me34xV_pzPE892qnUZW0WD2yBIQodNc8LWZpTQ4YpENy6WLJVBt-sVn-sliW7VAeTJslEfrMs4ZJ6lBptXD6JcYWyTlzvxU7DzAiux-Egcr8hAFhdo9iGdXTYirHpVGEGoqWhhMYU2K63M7Tw_2FiCFd6AXbh?purpose=fullsize
https://images.openai.com/static-rsc-4/eN8Zge_CSS-dC-wG0hVIh0MZE-nYnBfAkpJ6xJ9QeuSpHDonFPQ9LAM6ETEnxj0gjLTWERU8qJSPWxflOA97caXC0dCX9zSwANjMqqqNYUybuiQtyLk-d9-peo_XQh8ojCHh7H9EgVYdhF2WHMCQHSpIoDZU2Lbp0SyGmRSfIJw-2H9tmMlt_EomakfxywsQ?purpose=fullsize

8

πŸ” Penjelasan

Penyimpanan data lokal adalah proses menyimpan data langsung di perangkat pengguna (smartphone/tablet) tanpa harus bergantung pada server atau internet.

🧠 Narasi

Dalam banyak aplikasi mobile, tidak semua data harus selalu diambil dari server. Beberapa data perlu disimpan secara lokal untuk meningkatkan performa, mendukung mode offline, serta mengurangi penggunaan jaringan.

πŸ“Œ Contoh Penggunaan

  • Menyimpan data login pengguna
  • Cache data dari API
  • Menyimpan preferensi aplikasi

2. πŸ“Š Jenis Penyimpanan Data Lokal di Android

https://images.openai.com/static-rsc-4/I8GjEZAJrcFZzMpQzKJv20cPpMQL-6HgSqYa0UoZTwmzzmqU-7dp7mAqCKAFBQ56NnpBH8zOq3VUBlXP7Xzl1zEneQzqQRJN_aofBt85CQZ0It49m8BiJZJ_yZoooufLH-kihmfoEauJmYrd7hjnhA3QZTdfJ8pA8bDarpmRMWLz8toDVJOACnlmLR4fEEtB?purpose=fullsize
https://images.openai.com/static-rsc-4/2gx6RpQnRjAH_ruWfD3rfAmkfQl2WH5EAnwUf-9idoA3JKbFQ22MrsKW5nY9oSft7QGWj73QZ8LJdxJjxZWD0HJe3jvlXBJUlxGBP__KtUnXeT46Ys9AWyRRtE_ApZc7olqcxxbcfNtTqskYvJYNVL2vPVF4rxVa4YgULyp1wMCpOt1L_ciXPn0nh1_lCU3f?purpose=fullsize
https://images.openai.com/static-rsc-4/W5sKHF_mP0ClNHE-_Gr3t4nsEOtOB7p_OI4h9146bHBoOrAHvydFJbbrNBQXoS7MKAzkwtcy9X77kHxhVHNZvvBxbBSiSn-4HzSm97hMqPu8dCAhvryr7nKl1MSkFDwUbhZMOw7VUKctS2JZjG9ShwmwAZql8ZPY5kMMTplj12AFRIM-bBsyXj_LiCDptpxl?purpose=fullsize

8

πŸ” Jenis Penyimpanan

JenisDeskripsi
SharedPreferencesMenyimpan data sederhana (key-value)
Internal StorageFile privat aplikasi
External StorageFile yang dapat diakses pengguna
SQLite DatabaseDatabase lokal
Room DatabaseORM modern berbasis SQLite

🧠 Narasi

Pemilihan jenis penyimpanan bergantung pada kebutuhan aplikasi, seperti kompleksitas data dan tingkat keamanan.


3. πŸ”‘ SharedPreferences

https://images.openai.com/static-rsc-4/eN8Zge_CSS-dC-wG0hVIh0MZE-nYnBfAkpJ6xJ9QeuSpHDonFPQ9LAM6ETEnxj0gjLTWERU8qJSPWxflOA97caXC0dCX9zSwANjMqqqNYUybuiQtyLk-d9-peo_XQh8ojCHh7H9EgVYdhF2WHMCQHSpIoDZU2Lbp0SyGmRSfIJw-2H9tmMlt_EomakfxywsQ?purpose=fullsize
https://images.openai.com/static-rsc-4/3T-qc3aM5WfchazkVgVeKVfopT_5ZeDXL5BUbmNPoO1LlnfERfebTSUBILRt8DJhx-0z8GjbL0CwZFaxZnuwe7e0IcbZ891hZs562QIuPtwo3EiCjIOSy6EjCuiuKkoebgXpcC84zDloC2Sp5YGoXBVhVgDDWuTRU28fwYzODDcjmUfELM-VXzNJL3UXv8VK?purpose=fullsize
https://images.openai.com/static-rsc-4/le3SKJsd1ohqHVFnJnWAT5YA1N4cUdV6NmIOcQmzVHw8AAp3rzAxVLK7U8S0i7Z2uFyn-EqtQSc6A8HMHwhTgqE1HGGEEjSXN92A1e9Lz76t9EjWEnPfakFJNKxZoqB4SFZ6TMaAdYyOcUrRgdy_-NZp2lexxNmTQGN-YA0eRYo7lrV9I8xtXgYDakudwC6M?purpose=fullsize

8

πŸ” Penjelasan

SharedPreferences digunakan untuk menyimpan data sederhana dalam bentuk pasangan key-value.

πŸ“Œ Contoh Kode

val sharedPref = getSharedPreferences("MyPref", MODE_PRIVATE)
val editor = sharedPref.edit()
editor.putString("username", "admin")
editor.apply()

🧠 Narasi

SharedPreferences sering digunakan untuk menyimpan data kecil seperti pengaturan aplikasi atau status login pengguna.


4. πŸ“ Internal Storage

https://images.openai.com/static-rsc-4/ynmnVQIZ4VLpE2Bq11xREDp1MpIK9LlGe9BkSZq2YbfmHeKt3cAlngTGF8RfjwT3So7zJT6yzULWvSWnsD8RMgCQp4tC_-2MVL361pC3qx_VbKsiHjgh3G8Ae11BlxQ_n7lrngbG6xXQDsR3arhPi4PGgAaqhT7Ds2l9ngPnVz4sH_xxRMbV_Fhf_q87_v1o?purpose=fullsize
https://images.openai.com/static-rsc-4/2gx6RpQnRjAH_ruWfD3rfAmkfQl2WH5EAnwUf-9idoA3JKbFQ22MrsKW5nY9oSft7QGWj73QZ8LJdxJjxZWD0HJe3jvlXBJUlxGBP__KtUnXeT46Ys9AWyRRtE_ApZc7olqcxxbcfNtTqskYvJYNVL2vPVF4rxVa4YgULyp1wMCpOt1L_ciXPn0nh1_lCU3f?purpose=fullsize
https://images.openai.com/static-rsc-4/T2rl-Md0Rw1f_PHcuoCAhJ4vpeNeEVkiE3JqGHHq-41OLD8Uy_XxjzXphP38kdW3IEMKPccva1wXjlj8Wq8XiuxTthpQ_q2HwYITUx4iS2MQbwdbFsTKBa5bKzUCvrRdzhi_zBuDw0Nyy-LlNMcd-FSvASmJdngJ1FG6BMKougSemK7TGlxNkpbxsONutwiW?purpose=fullsize

7

πŸ” Penjelasan

Internal storage adalah penyimpanan file yang hanya dapat diakses oleh aplikasi itu sendiri.

πŸ“Œ Contoh

openFileOutput("data.txt", MODE_PRIVATE).use {
it.write("Hello".toByteArray())
}

🧠 Narasi

Data dalam internal storage aman karena tidak dapat diakses oleh aplikasi lain.


5. πŸ’Ύ External Storage

https://images.openai.com/static-rsc-4/57YUtCNixfQ9zxHKyXWutXXvoMNFnsXIsnfQBPqF28aTkZGm2L77hVLautCD1MrQiLuYxZylLtwEq7701r1l8HlwZ9rKky2pYuTpcuBhp2VeXp_zxCCio5jhKWhtw9VcypqD-sisk4gGxnA-BKliY6EijBxvCWltiAiy2a7fsQ5Tq7hEdKJ0t0UFR2hkx4N7?purpose=fullsize
https://images.openai.com/static-rsc-4/B4QwHU4vGI7Rjv8BVcCMt0pwVlt5mSX1S7iUeFocfpCQ1a7-vCo1Ycd1QXJE46-CUEyjTE8xMNddx9YrktrHw51ZCG6L6pY7UKEY-RtiTCJ_RpN2vuFBx1fXJyBrFiSYwtXhB0Fgc3HltBGKx66oT6iTbpmu3kkC1W3CiotM7_ETozala_6QA5f2w5meGxum?purpose=fullsize
https://images.openai.com/static-rsc-4/ciioV3kPH4fdmd6S92pMoCF7wq3ByioPBgigvL16YrfR_6i3emWe5qgNfsMVuyjA5gCnTNdkH2RUKU_2I065FrnxP-HEpIZaqeTTXOzhO6HbQhjBsNGoAvVR4tqgLoeBiW00BE_GcAeSG85m2MOC4_WeeK3MC66ijldlefBrSq-fRGLlDoWixQulIL7x-lFF?purpose=fullsize

8

πŸ” Penjelasan

External storage adalah penyimpanan yang dapat diakses oleh pengguna dan aplikasi lain.

🧠 Narasi

Digunakan untuk menyimpan file besar seperti gambar, video, atau dokumen. Namun, memerlukan izin (permission).


6. πŸ—„οΈ SQLite Database

https://images.openai.com/static-rsc-4/C3Ti8bmsLQ-vGvnfCpEy8-8qyFdWayDBZlRMWt6sSsoXkY5a5j6-NGdynFnKosgw_KWpPUFI8W_1ZhLcsCNznb7RMLKSHpk5J9HKzIkM2IIVycGZgOAj206fBQXWVb8I9qpRCPXgL0D74NCU4G0h7BccAHlP8NsGwzRftNlfdZCsQSb7ZRUOo_kipurrE4bH?purpose=fullsize
https://images.openai.com/static-rsc-4/sEPRoXhN9hQMEgGxaSsZgim02gRd21TWE0yQL6F6POWijnc7TCRGqiTzT7CAimJ5aujLr5QEYocXjORlPDWVDMrhKRk9A3_L2iKM5rHUxRG5bDMJx_7sNudhLkbzZxIng4dSW96CxQguGPubVH2BcPuha2kEmpRTjqxOkCy41NsZJRUoo4199Izhpwx5GDxs?purpose=fullsize
https://images.openai.com/static-rsc-4/mscEbmSs4YUzdEvClP53ueb0VZ0t7mlwP-ZZBnnsxjreCsJVLzHuLoAN20Q7fNJP6OU4VDvom3oRgcPi1rJ67phwsa0QswDHRSEJEagHsnx_dbfAI2C5gJHMj9n5vrLRReENpyjPnROH4VBHfNqlllipTa2XRQXCLWU9NEPybq9ZSII01gH8N6jaNx60Mq0_?purpose=fullsize

6

πŸ” Penjelasan

SQLite adalah database relasional ringan yang digunakan di Android untuk menyimpan data terstruktur.

πŸ“Š Operasi CRUD

OperasiFungsi
CreateMenambah data
ReadMembaca data
UpdateMengubah data
DeleteMenghapus data

🧠 Narasi

SQLite cocok untuk aplikasi yang membutuhkan pengolahan data kompleks seperti aplikasi keuangan atau inventory.


7. 🧠 Room Database (Modern Approach)

https://images.openai.com/static-rsc-4/W5sKHF_mP0ClNHE-_Gr3t4nsEOtOB7p_OI4h9146bHBoOrAHvydFJbbrNBQXoS7MKAzkwtcy9X77kHxhVHNZvvBxbBSiSn-4HzSm97hMqPu8dCAhvryr7nKl1MSkFDwUbhZMOw7VUKctS2JZjG9ShwmwAZql8ZPY5kMMTplj12AFRIM-bBsyXj_LiCDptpxl?purpose=fullsize
https://images.openai.com/static-rsc-4/QxbM27aD5Elo22JEMzJvmBW9DDBiDQDTSKQh7qbUpBjJPya17Z5UxxI4GazYz3OZZ5BVmjRIJPvFelV6CPKKdVKQBPb-PGeIukr5ZQzHtKu-Yaj_oEy4VHqln-lWq5gJueoUfaQSmxHexSUbtMyLLPe0uYwWcciJ4h3ePpd07T7olyeJQSxJZfVqnLYP2qrb?purpose=fullsize
https://images.openai.com/static-rsc-4/zBPhGhsKzVEK7-eFHROc56jjVj_q3DuXWUYuuEIiYE6sKqOHIrxLPAc6CSXngL-sls9Q0MJnA0w-LogFYk-EVIhvnEi41_iRZyhomJ5HmkMUlFR9HY6a7OnsD7z-BJbQpQp-V0aiy1mLMszHdyRVleiFlTChFbPpwuNpdPnW3jwwKORUUP6gOMdVULKfhU-M?purpose=fullsize

7

πŸ” Komponen Room

  • Entity β†’ tabel database
  • DAO (Data Access Object) β†’ akses data
  • Database β†’ penghubung

πŸ“Œ Contoh Entity

@Entity
data class User(
@PrimaryKey val id: Int,
val name: String
)

🧠 Narasi

Room adalah abstraksi dari SQLite yang mempermudah pengelolaan database dengan kode yang lebih bersih dan aman.


8. πŸ”„ Perbandingan Metode Penyimpanan

https://images.openai.com/static-rsc-4/I8GjEZAJrcFZzMpQzKJv20cPpMQL-6HgSqYa0UoZTwmzzmqU-7dp7mAqCKAFBQ56NnpBH8zOq3VUBlXP7Xzl1zEneQzqQRJN_aofBt85CQZ0It49m8BiJZJ_yZoooufLH-kihmfoEauJmYrd7hjnhA3QZTdfJ8pA8bDarpmRMWLz8toDVJOACnlmLR4fEEtB?purpose=fullsize
https://images.openai.com/static-rsc-4/2gx6RpQnRjAH_ruWfD3rfAmkfQl2WH5EAnwUf-9idoA3JKbFQ22MrsKW5nY9oSft7QGWj73QZ8LJdxJjxZWD0HJe3jvlXBJUlxGBP__KtUnXeT46Ys9AWyRRtE_ApZc7olqcxxbcfNtTqskYvJYNVL2vPVF4rxVa4YgULyp1wMCpOt1L_ciXPn0nh1_lCU3f?purpose=fullsize
https://images.openai.com/static-rsc-4/fl7r6JIjEBefVc5_7ZVbrhwwValDXCyfiUFOGFqG170ZFpBBDaJLjHWsTjxfqwMDQtpVSHgV00sAhOpbIFpa6O-qBoQFoFUEa9SItyOJipiNRxcBxqP4S2kNLTDOLoif1m0TsPf6fWRAlXJTAn2J3rU0-HqatPhSWtZbhXuVPnmUmRrqlDP17ebg0NIyh9tv?purpose=fullsize

7

πŸ“Š Tabel Perbandingan

MetodeKelebihanKekurangan
SharedPreferencesMudah digunakanHanya untuk data kecil
Internal StorageAmanTidak fleksibel
External StorageKapasitas besarKurang aman
SQLitePowerfulKompleks
RoomModern & mudahPerlu konfigurasi

🧠 Narasi

Pemilihan metode penyimpanan harus disesuaikan dengan kebutuhan aplikasi.


9. πŸ” Keamanan Data Lokal

https://images.openai.com/static-rsc-4/_XwoB1VTc224joN6_BEop9m_xM16nIZwXbkWqpJcq0hNAgSNEI4WGgMzS69tNlEYuJ_r56nDGh7C4-_WANyrKrmfs8W-bca1i7C6mfgL1DCz1vHfHnF2PGJoBcUKwdLOa8IuRYKkZJ2wThXY8hUm6QzDf6NAjJ9U5JG4q1M9hOtwnWgB8pGW2clYtXiEnEIm?purpose=fullsize
https://images.openai.com/static-rsc-4/5gGz0r0o0UyWM1gyXnzStPzuZc0DWLZTbYcNEcWe3gkXBuK__RdVkV0puXQP8Fb4MmvTMgIFqwvokJ9svIro-LWPSKnSRXWCKbALYNjmJ8kSu85lvPs7dduRcpAuRDd50rfpVn3mYgnvqTOrZvwEDc9h7lrmYKS3gu0vbUtSkqoHQY5OYndlGBUzVIAw9hvx?purpose=fullsize
https://images.openai.com/static-rsc-4/DTT3qjDKADn_6THLyskM7KbfIbUsed65HgsCLh-_sitTjGIAYLSb2GQGGgaGJ75sVOIWCm0C0JYkXYTWrxZccuQgac5fiRZiXwgdF80_PYnzKCclba6WX99Yfm2ojB6l4O7Y_o_EZvudyEt1uD0eH5N1WiP8j6C-vjksgvkapPZd23FURXN7oxJHt5nlZx5x?purpose=fullsize

7

πŸ” Aspek Keamanan

  • Enkripsi data
  • Gunakan Android Keystore
  • Hindari menyimpan data sensitif secara plain text

🧠 Narasi

Keamanan sangat penting karena data lokal bisa mengandung informasi sensitif pengguna.


10. ⚠️ Permasalahan Umum

https://images.openai.com/static-rsc-4/C0Z9wIfQOO3gBIUnbID7lTXplpy-M-jeGTD-UsHQBSpmrDrdTpfcThJTyQlkb0hfs-CFzJ6XDaL9Q01bxb7SM00xzsNR_bxe3_ikZZY7rwuSQ6v-8RCNW1bnzZ4ExmFZ4c0YZjsh0aZpxWXH91BLtD5Y6o_5EeJ4EuY26DTolKeDl21ue4mdo0-BH12lJQJt?purpose=fullsize
https://images.openai.com/static-rsc-4/ourkti_43eZWr1rjPGVQ605naQxL63egbary2EkPPFlKrI92-jWIQiR_RPJGXjYBQpnkHpA4hFcEunI2VqdkBhq_w6_pZDmwBwsghG_ota8skWEH5sx5P2h6YjRBAvkEwS-TK7-01jpXyf2cm7CvWh4CABfnmUW91DjgDcwSPZhffu3HbPe6YpQmG-2Ve1Pp?purpose=fullsize
https://images.openai.com/static-rsc-4/xDB2KDvV5ahwsdsiXoVSHwUP7uwAPfR0HoDeqfS1jVvCKZLKBhDz40vI3-njSLk3sjOWxdFZXVbUNeUtSyaJMrT5DIlwcN2rHoS1mZNBjQeDzStREfj7SUjHflbQqhVN_Fd39X7j7A-TE6qSPzkaC15HAtGjc49RFGYHMA38wuJStoTHOJkhBSxJweIOrv2e?purpose=fullsize

6

πŸ” Masalah

  • Storage penuh
  • Data corrupt
  • Permission error
  • Data hilang

🧠 Narasi

Pengelolaan data yang buruk dapat menyebabkan aplikasi tidak stabil.


11. πŸ’‘ Best Practice

πŸ” Tips

  • Gunakan Room untuk database kompleks
  • Gunakan SharedPreferences untuk data kecil
  • Backup data penting
  • Gunakan enkripsi

🧠 Narasi

Best practice membantu menjaga performa dan keamanan aplikasi.


πŸ“Œ Kesimpulan

Penyimpanan data lokal merupakan bagian penting dalam pengembangan aplikasi mobile. Dengan memahami berbagai metode seperti SharedPreferences, file storage, SQLite, dan Room, pengembang dapat memilih solusi terbaik sesuai kebutuhan aplikasi.


🎯 Latihan / Tugas

  1. Simpan data login menggunakan SharedPreferences
  2. Buat file di internal storage
  3. Implementasikan database SQLite sederhana
  4. Buat Room Database untuk data user