Realm เป็นโซลูชันฐานข้อมูลมือถือที่ให้ทางเลือกแทนฐานข้อมูล SQL แบบดั้งเดิมเช่น SQLite ได้รับการออกแบบมาโดยเฉพาะสำหรับอุปกรณ์เคลื่อนที่ และกลายเป็นตัวเลือกยอดนิยมสำหรับการจัดเก็บและจัดการข้อมูลในแอปพลิเคชัน Android ในบทความนี้ เราจะสำรวจพื้นฐานของ Realm และวิธีการใช้ใน Android เพื่อจัดเก็บ ดึงข้อมูล และจัดการข้อมูล
อาณาจักรคืออะไร? Realm เป็นโซลูชันฐานข้อมูลแบบโอเพ่นซอร์สและเชิงวัตถุที่สร้างขึ้นโดยเฉพาะสำหรับอุปกรณ์มือถือ มอบวิธีที่ง่าย รวดเร็ว และมีประสิทธิภาพในการจัดเก็บข้อมูลบนอุปกรณ์เคลื่อนที่ ต่างจากฐานข้อมูล SQL แบบดั้งเดิม Realm ไม่ได้ใช้โมเดลเชิงสัมพันธ์ ซึ่งทำให้ใช้งานง่ายและมีประสิทธิภาพมากขึ้นในการจัดเก็บข้อมูลบนอุปกรณ์เคลื่อนที่
เริ่มต้นใช้งาน Realm ใน Android หากต้องการเริ่มต้นใช้งาน Realm ใน Android คุณจะต้องเพิ่มไลบรารี Realm ในโครงการของคุณ ซึ่งสามารถทำได้โดยการเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ build.gradle
ของแอปของคุณ:
implementation 'io.realm:realm-android:<latest-version>'
ถัดไป คุณจะต้องสร้างอินสแตนซ์ฐานข้อมูล Realm คุณสามารถทำได้โดยสร้างคลาสที่ขยายคลาส RealmObject ดังนี้:
import io.realm.RealmObject import io.realm.annotations.PrimaryKey open class Person( @PrimaryKey var id: Int = 0, var name: String = "", var age: Int = 0 ) : RealmObject()
เมื่อสร้างอินสแตนซ์ฐานข้อมูล Realm แล้ว คุณสามารถเริ่มจัดเก็บและเรียกข้อมูลได้แล้ว
เลือก
หากต้องการดึงข้อมูลจากฐานข้อมูล Realm คุณสามารถใช้เมธอด where
เพื่อกรองผลลัพธ์ได้ เช่น:
val realm = Realm.getDefaultInstance() val results = realm.where(Person::class.java).findAll()
แทรก
หากต้องการแทรกข้อมูลลงในฐานข้อมูล Realm คุณสามารถสร้างอินสแตนซ์ใหม่ของ RealmObject และใช้เมธอด copyToRealm
เพื่อบันทึกได้ เช่น:
val realm = Realm.getDefaultInstance() realm.beginTransaction() val person = realm.createObject(Person::class.java, primaryKeyValue) person.name = "John Doe" person.age = 30 realm.commitTransaction()
อัปเดต
หากต้องการอัปเดตข้อมูลในฐานข้อมูล Realm คุณสามารถใช้เมธอด copyToRealmOrUpdate
เพื่อบันทึกการเปลี่ยนแปลงได้ เช่น:
val realm = Realm.getDefaultInstance() realm.beginTransaction() val person = realm.where(Person::class.java).equalTo("id", primaryKeyValue).findFirst() person?.name = "Jane Doe" realm.commitTransaction()
ลบ
หากต้องการลบข้อมูลจากฐานข้อมูล Realm คุณสามารถใช้เมธอด delete
ได้ เช่น:
val realm = Realm.getDefaultInstance() realm.beginTransaction() val person = realm.where(Person::class.java).equalTo("id", primaryKeyValue).findFirst() person?.deleteFromRealm() realm.commitTransaction()
ความสัมพันธ์
ความสัมพันธ์แบบหนึ่งต่อหนึ่ง: ในความสัมพันธ์แบบหนึ่งต่อหนึ่ง อินสแตนซ์ของ RealmObject หนึ่งเกี่ยวข้องกับอินสแตนซ์ของ RealmObject อื่นเพียงอินสแตนซ์เดียวเท่านั้น ตัวอย่างเช่น พิจารณาวัตถุ Person
และ Address
วัตถุ Person
มี Address
เพียงตัวเดียว ดังนั้นคุณจึงสามารถกำหนดความสัมพันธ์นี้ใน Realm ได้โดยการเพิ่มฟิลด์ Address
ให้กับวัตถุ Person
import io.realm.RealmObject import io.realm.annotations.PrimaryKey open class Person( @PrimaryKey var id: Int = 0, var name: String = "", var age: Int = 0, var address: Address? = null ) : RealmObject() open class Address( @PrimaryKey var id: Int = 0, var street: String = "", var city: String = "", var state: String = "", var zip: String = "" ) : RealmObject()
ความสัมพันธ์แบบหนึ่งต่อกลุ่ม: ในความสัมพันธ์แบบหนึ่งต่อกลุ่ม อินสแตนซ์ของ RealmObject หนึ่งเกี่ยวข้องกับหลายอินสแตนซ์ของ RealmObject อื่น ตัวอย่างเช่น พิจารณาวัตถุ Person
และ Pet
วัตถุ Person
สามารถมีวัตถุ Pet
ได้หลายวัตถุ ดังนั้นคุณจึงสามารถกำหนดความสัมพันธ์นี้ใน Realm ได้โดยการเพิ่มวัตถุ RealmList
จาก Pet
ให้กับวัตถุ Person
import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey open class Person( @PrimaryKey var id: Int = 0, var name: String = "", var age: Int = 0, var pets: RealmList<Pet> = RealmList() ) : RealmObject() open class Pet( @PrimaryKey var id: Int = 0, var name: String = "", var breed: String = "" ) : RealmObject()
ความสัมพันธ์แบบกลุ่มต่อกลุ่ม: ในความสัมพันธ์แบบกลุ่มต่อกลุ่ม อินสแตนซ์ของ RealmObject หนึ่งเกี่ยวข้องกับหลายอินสแตนซ์ของ RealmObject อื่น และในทางกลับกัน ตัวอย่างเช่น พิจารณาวัตถุ Person
และ Event
วัตถุ Person
สามารถเข้าร่วมได้หลายวัตถุ Event
และวัตถุ Event
สามารถเข้าร่วมได้ด้วยวัตถุ Person
หลายชิ้น หากต้องการใช้ความสัมพันธ์นี้ คุณจะต้องเพิ่มออบเจ็กต์ RealmList
จาก Person
ไปยังออบเจ็กต์ Event
และออบเจ็กต์ RealmList
จาก Event
ไปยังออบเจ็กต์ Person
import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey open class Person( @PrimaryKey var id: Int = 0, var name: String = "", var age: Int = 0, var events: RealmList<Event> = RealmList() ) : RealmObject() open class Event( @PrimaryKey var id: Int = 0, var name: String = "", var date: String = "", var attendees: RealmList<Person> = RealmList() ) : RealmObject()
โดยสรุป Realm เป็นโซลูชันฐานข้อมูลมือถือที่ทรงพลังและมีประสิทธิภาพ ซึ่งทำให้ง่ายต่อการจัดเก็บ เรียกค้น และจัดการข้อมูลในแอปพลิเคชัน Android API ที่ใช้งานง่ายของ Realm ประสิทธิภาพที่แข็งแกร่ง และการสนับสนุนความสัมพันธ์ในตัวทำให้ Realm เป็นตัวเลือกยอดนิยมสำหรับการพัฒนาแอปที่ขับเคลื่อนด้วยข้อมูล ไม่ว่าคุณจะทำงานกับข้อมูลจำนวนเล็กน้อยหรือจัดการชุดข้อมูลขนาดใหญ่ Realm ก็มีเครื่องมือและคุณสมบัติที่คุณต้องการในการสร้างและบำรุงรักษาแอปพลิเคชันประสิทธิภาพสูงและปรับขนาดได้ หากคุณกำลังมองหาโซลูชันฐานข้อมูลที่รวดเร็วและเชื่อถือได้สำหรับโปรเจ็กต์ Android ของคุณ ลองพิจารณาลองใช้ Realmดู