شرح استخدام room في برنامج اندرويد ستوديو android studio

 

شرح استخدام room في برنامج اندرويد ستوديو android studio

android studio local data base #3 : شرح استخدام room في برنامج اندرويد ستوديو


هذا الدرس يعد اولى الدروس في شرح room وهي الاكثر استعمالا في local database وفي الدروس السابقة شرحنا لكم فكرة Shared ومتى تستخدم وفي هذة المقالة سوف نتطرق معكم باذن الله تعالى بشرح الروم في اندرويد ستوديو وكم هي مهمة جدا في التعامل مع البيانات بشكل كبير جدا وايضا سوف نضع لكم مثال يوضح الفكرة وسوف نعمل على كلا الطريقتين بشكل كبير في الايام المقبلة وفي الدرس التي سوف تقدم وايضا كيف تحفظ بيانات المستخدم على الجهاز دون الحاجة الى firebase .


مجال تطوير تطبيقات الاندرويد واحد من اكثر المجالات التي ينصح بتعملها او البدء في تعلم كيفية شركة تطوير تطبيقات الجوال لان اغلب العمل الحر المقدم على الانترنت يبحثون عن تطوير تطبيقات الهواتف الذكية بشكل كبير مثلا متجر يريد تحويل مجالة الى اليكتروني و ايضا مجال الويب وتصميم المواقع واحد من اكبر المجالات التي تعظى بقابلية لدى الاغلب منا ومتوفر لها دروس على الانترنت بكثرة عكس تطوير تطبيقات الهواتف الذكية ونحن نسعى الى توفير تعلم هذا المجال بشكل مجاني للجميع بهدف اثراء المحتوى العربي , وقد هذا المجال مصدر دخل ورزق بالنسبة لك وهنالك اشخاص يعتمدون وبشكل كبير على مجال شركة تطوير تطبيقات الجوال منها اندرويد و ios ونحن نحاول ان نشرح لك كيف شيئ في هذا المجال ونقدم لكم شروحات من اجل تطويرك في المجال .


الامر لا يقتصر فقط على تطوير تطبيقات الموبايل والعمل الحر فيمكنك بعد تعلم برمجة تطبيقات الاندرويد البحث عن شركة تطوير تطبيقات الجوال والعمل بداخلها وايضا يمكنك تعلم برمجة تطبيقات سطح المكتب ونحن نقدم لكم دورة جافا بسيطة جدا تمكنك من تعليم البرمجة للاطفال بالعربي اذا كنت تريد ان تعلم طفلك البرمجة او حتى تبدء فيها انت ولكن بما انك في هذة المقاله فلا اعتقد انك ما زلت مبتدء في لغة جافا , عملية تعليم البرمجة للاطفال مجانا اصبحت متوفرة وبكثرة على الانترنت عكس سابقها فيمكن لطفلك البدء في التعلم والتطور من نفسه في هذا المجال وهو ممتع وهذا المجال لا يقتصر على الكبار فقط بل يمكن تعلم البرمجة للاطفال يمكن بعد تعلمة الجافا الانتقال الى تطوير تطبيقات الاندرويد ولن يجد اكثر من المقالات حول هذا المجال في موقعنا .


مكتبة room للاندرويد ستوديو لتخزين البيانات على الجهاز .


اول خطوة يجب ان تقوم بتركيب هذة الاضافة لديك في build gradle وقد وان شرحنا لكم كيفية الاضافة ولكن لا بأس انتقل الى  build gradle كما بالصورة واضف الاكواد التالية في المكان المخصص وبعدها انقر على sync now ليتم حفظها لديك .



room library for android studio


dependencies {

    def room_version = "2.3.0"
    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

}



ما المتطلبات التي تحتاجها لعمل room database ؟


سوف تحتاج الى التالي 


Entity ( Table class ).

DAO Data access ( interface ).

Database ( Abstract Class ).


خطوات تخزين البيانات داخل room database


الان قم بإنشاء كلاس جديد باسم NoteEntity.class لتقوم بعمل هذا الكلاس كالجدول وقم بعمل String و int للبيانات التي تريدها وهنا استخدمت 4 متغيرات وهم id , name ,priority , content قم بعمل لهم constructor ولكن لا تقم بعمله للـ id لاننا لا نريد المستخدم ان يدخله بل نريدة قيمة تتغير وتزيد 1 عندما يتم اضافة عنصر , وبعدها قم بعمل لهم getter and setter والان قم بعمل notation اولا بالنسبة للclass قم بعمله Entity و واطلق عليه اسم وهذا الاسم سوف نستعمله عندما نريد ان نجلب البيانات وسيكون التعامل بشكل sql وقد سبق وان شرحنا لكم sql وكيف تعمل اللغه , وبعدها اطلق على جميع العناصر notation كما هو بالصورة وللتوضيح :


// ColumnInfo لو قررت تغير الاسم في اي وقت لا يكون مشكلة

// Entity الكيان او بمعنى اخر الاسم الذي يحمل الجدول

// PrimaryKey يستخدم للاشياء الفريدة من نوعها مثل الاي دي



NoteEntity.class


@Entity(tableName = "NoteTable")
public class NoteEntity {
    @PrimaryKey (autoGenerate = true)
    int id;

    @ColumnInfo (name = "priority")
    int priority;

    @ColumnInfo (name = "name")
    String name;

    @ColumnInfo (name = "content")
    String content;
    public NoteEntity(String name, String content, int priority) {
        this.name = name;
        this.content = content;
        this.priority = priority;
    }

    public String getName() {
        return name;
    }

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

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public int getId() {
        return id;
    }

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

    public int getPriority() {
        return priority;
    }

    public void setPriority(int priority) {
        this.priority = priority;
    }
}


الان انتهينا من الخطوة الاولى وهي عمل Entity والان ننتقل الى الخطوة التالية وهيا DAO وفي هذة الخطوة تكمن sql حيث يمكن عمل insert و select و delete للQuery كما هو موضح بالصورة اولا نريد عمل Insert و تحديد جميع العناصر وايضا تجربة حذف عنصر معين وتجربة حذف جميع العناصر يمكنك عمل ما ترغب به وتقريبا هذة الاشياء قمنا بشرحها لكم في قسم sql oracle بشكل اكبر يمكنك الرجوع اليه لفهم اللغة بشكل اوسع 



NoteDAO.interface


@Dao
public interface NoteDAO {
    @Insert
    void insertNote (NoteEntity note);

    @Query("Select * from NoteTable")
    List<NoteEntity> getnote ();

    @Delete
    void deletenote(NoteEntity note);

    @Query("Delete from NoteTable")
    void deleteallnote ();
}


الخطوة الاولى build entity تمت و الثانية وهيا dao انتهت تبقت لنا اخر خطوة وهي Databse حيث ستكون المخصصه لعرض البيانات ولذلك قمنا بعمل private static NoteDatabase لكي نستطيع استخدامها في اي مكان و abstract NoteDAO وبعدها قمنا بعمل if بسيط يقوم باختيار اذا لم يكن هناك بيانات يقوم بتخزين البيانات واذا كانت هناك بيانات يقوم بجلبها وعرضها عن طريق عمل return للinstance وهو عبارة عن object من NoteDatabase , لو تلاحظ اننا استخدمنا allowMainThreadQueries في حفظ البيانات وهذا الامر غير محبز به والسبب هو انه عندما تكثر البيانات سوف يحدث تاخر بسيط في ui الخاص بالتطبيق ولكن في الدروس القادمة سيتم شرح javax و thread ويمكنك بعدها الاستغناء عن هذا الامر والعمل بالثيرد افضل .



NoteDatabase


@Database(entities = NoteEntity.class, version = 1, exportSchema = false)
public abstract class NoteDatabase extends RoomDatabase {

    private static NoteDatabase instance;
    public abstract NoteDAO noteDAO();

    public static NoteDatabase getInstance(Context context) {
        if (instance == null) {
            instance = Room.databaseBuilder(context, NoteDatabase.class, "NoteDatabase").allowMainThreadQueries().
                    build();
        }
        return instance;
    }
}


الى يكون تكون انتهت مقالة اليوم في المقالة القادمة سوف نشرح لكم كيف يمكنك تخزين بيانات وعرضها في قواعد البيانات والامر بسيط جدا عباره عن فانكشن بسيطة سوف تشرح المره القادمة تستخدم في main activity . class حاول ان تقرأ هذة المقالة اكثر من مرة لكي ترسخ معك الفكرة .


لمزيد من الدروس والشروحات في برنامج اندرويد ستوديو شاهد المقالات التالية :-


تعليقات