הערות על נתוני אביב

מאמר זה הוא חלק מסדרה: • הערות ליבת אביב

• הערות רשת אביבית

• הערות על מגפי האביב

• הערות על תזמון האביב

• הערות לנתוני אביב (מאמר נוכחי) • הערות שעועית באביב

1. הקדמה

Spring Data מספק הפשטה על טכנולוגיות אחסון נתונים. לכן קוד ההיגיון העסקי שלנו יכול להיות הרבה יותר בלתי תלוי ביישום ההתמדה הבסיסי. כמו כן, אביב מפשט את הטיפול בפרטים תלויי יישום של אחסון נתונים.

במדריך זה נראה את ההערות הנפוצות ביותר של פרויקטים של Spring Data, Spring Data JPA ו- Spring Data MongoDB.

2. הערות נתוני אביב נפוצות

2.1. @ Transactional

כשאנחנו רוצים להגדיר את התנהגות העסקה של שיטהאנחנו יכולים לעשות את זה עם:

@ תשלום ריק בעסקה () {}

אם אנו מיישמים את ההערה הזו ברמת הכיתה, אז היא עובדת על כל השיטות בתוך הכיתה. עם זאת, אנו יכולים לעקוף את השפעותיו על ידי יישום זה על שיטה ספציפית.

יש לו אפשרויות תצורה רבות, אשר ניתן למצוא במאמר זה.

2.2. @NoRepositoryBean

לפעמים אנו רוצים ליצור ממשקי מאגר במטרה היחידה לספק שיטות נפוצות למאגרי הילדים.

כמובן, אנחנו לא רוצים שאביב ייצור שעועית ממאגרים אלה מכיוון שלא נזריק אותם לשום מקום. @NoRepositoryBean עושה בדיוק את זה: כאשר אנו מסמנים ממשק ילדים של org.springframework.data.repository.Repository, אביב לא ייצור ממנו שעועית.

לדוגמא, אם אנו רוצים FindById אופציונלי (מזהה מזהה) בשיטה בכל המאגרים שלנו, אנו יכולים ליצור מאגר בסיס:

ממשק @ NoRepositoryBean MyUtilityRepository מרחיב את CrudRepository {optionById (ID id) אופציונלי; }

הערה זו אינה משפיעה על ממשקי הילד; לפיכך אביב ייצור שעועית עבור ממשק המאגר הבא:

ממשק @ מאגר PersonRepository מרחיב את MyUtilityRepository {}

שים לב, שהדוגמה שלמעלה איננה הכרחית מכיוון ש Spring Data גרסה 2 הכוללת שיטה זו להחליף את הישנה T findOne (מזהה מזהה).

2.3. @ פארם

אנו יכולים להעביר פרמטרים בעלי שם לשאילתות שלנו באמצעות @ פארם:

@Query ("FROM Person p WHERE p.name =: name") Person findByName (@Param ("name") שם מחרוזת);

שים לב, שאנחנו מתייחסים לפרמטר עם ה- :שֵׁם תחביר.

לקבלת דוגמאות נוספות, בקר במאמר זה.

2.4. @תְעוּדַת זֶהוּת

@תְעוּדַת זֶהוּת מסמן שדה בכיתת מודל כמפתח הראשי:

אדם בכיתה {@ Id ארוך מזהה; // ...}

מכיוון שהוא בלתי תלוי ביישום, זה הופך את מחלקת הדגמים לקלה לשימוש עם מנועי חנות נתונים מרובים.

2.5. @חולף

אנו יכולים להשתמש בהערה זו כדי לסמן שדה בכיתת מודל כארעית. מכאן שמנוע מאגר הנתונים לא יקרא או יכתוב את ערך השדה הזה:

אדם בכיתה {// ... @ Transient int age; // ...}

כמו @תְעוּדַת זֶהוּת, @חולף הוא גם לא תלוי ביישום, מה שהופך אותו לנוח לשימוש עם מספר יישומי חנות נתונים.

2.6. @נוצר על ידי, @LastModifiedBy, @תאריך יצירה, @LastModifiedDate

באמצעות הערות אלה, אנו יכולים לבקר את מחלקות המודל שלנו: אביב מאכלס באופן אוטומטי את השדות המאושרים עם המנהל שיצר את האובייקט, שינה אותו לאחרונה, ותאריך היצירה ושינוי אחרון:

אדם בכיתה ציבורית {// ... @CreatedBy יוצר המשתמש; שינוי משתמש @LastModifiedBy; תאריך @CreatedDate createdAt; @LastModifiedDate תאריך שינוי At; // ...}

שימו לב, שאם אנו רוצים שאביב יאכלס את המנהלים, עלינו להשתמש גם באבטחת אביב.

לתיאור מעמיק יותר אנא בקרו במאמר זה.

3. הערות JPA על נתוני אביב

3.1. @שאילתא

עם @שאילתא, אנו יכולים לספק הטמעת JPQL לשיטת מאגר:

@Query ("בחר ספירה (*) מאדם p") ארוך getPersonCount ();

כמו כן, אנו יכולים להשתמש בפרמטרים בשם:

@Query ("FROM Person p WHERE p.name =: name") Person findByName (@Param ("name") שם מחרוזת);

חוץ מזה, אנו יכולים להשתמש בשאילתות SQL מקוריות, אם אנו מגדירים את ה- nativeQuery ויכוח ל נָכוֹן:

@Query (value = "SELECT AVG (p.age) FROM person p", nativeQuery = true) int getAverageAge ();

למידע נוסף אנא בקרו במאמר זה.

3.2. @תהליך

בעזרת Spring Data JPA אנו יכולים בקלות להתקשר להליכים מאוחסנים ממאגרים.

ראשית, עלינו להכריז על המאגר במחלקת הישות באמצעות הערות JPA רגילות:

@NamedStoredProcedureQueries ({@NamedStoredProcedureQuery (name = "count_by_name", procedureName = "person.count_by_name", parameters = {@StoredProcedureParameter (mode = ParameterMode.IN, name = "name", type = String.class), @StoredPro = ParameterMode.OUT, name = "count", type = Long.class)})}) class class {}

לאחר מכן, אנו יכולים להתייחס אליו במאגר עם השם שהכרזנו ב- שֵׁם טַעֲנָה:

@Procedure (name = "count_by_name") getCountByName ארוך (@Param ("שם") שם מחרוזת);

3.3. @לנעול

אנו יכולים להגדיר את מצב הנעילה כאשר אנו מבצעים שיטת שאילתת מאגר:

@Lock (LockModeType.NONE) @Query ("בחר מספר (*) מאדם p") ארוך getPersonCount ();

מצבי הנעילה הזמינים:

  • לקרוא
  • לִכתוֹב
  • אוֹפּטִימִי
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • PESSIMISTIC_FORCE_INCREMENT
  • אף אחד

3.4. @ שינוי

אנו יכולים לשנות נתונים בשיטת מאגר אם אנו מציינים אותם @ שינוי:

@Modifying @Query ("UPDATE Person p SET p.name =: name WHERE p.id =: id") void changeName (@Param ("id") id lang, @Param ("name") שם מחרוזת);

למידע נוסף אנא בקרו במאמר זה.

3.5. @EnableJpaRepositories

כדי להשתמש במאגרי JPA, עלינו לציין זאת באביב. אנחנו יכולים לעשות זאת עם @EnableJpaRepositories.

שים לב, שעלינו להשתמש בהערה זו עם @תְצוּרָה:

@Configuration @EnableJpaRepositories class PersistenceJPAConfig {}

האביב יחפש מאגרים בחבילות המשנה של זה @תְצוּרָה מעמד.

אנו יכולים לשנות התנהגות זו באמצעות ה- basePackages טַעֲנָה:

@Configuration @EnableJpaRepositories (basePackages = "com.baeldung.persistence.dao") class PersistenceJPAConfig {}

כמו כן, שים לב ש- Spring Boot עושה זאת באופן אוטומטי אם הוא מוצא JPA של Spring Data על מסלול הכיתה.

4. ביאורי נתוני מאנגו נתונים

Spring Data הופך את העבודה עם MongoDB להרבה יותר קלה. בחלקים הבאים נחקור את התכונות הבסיסיות ביותר של Spring Data MongoDB.

לקבלת מידע נוסף, אנא בקרו במאמר שלנו על Spring Data MongoDB.

4.1. @מסמך

ביאור זה מסמן מחלקה כאובייקט תחום שאותו אנו רוצים להחזיק במסד הנתונים:

משתמש בכיתה מסמך {}

זה גם מאפשר לנו לבחור את שם האוסף בו אנו רוצים להשתמש:

משתמש בכיתה @ Document (collection = "user") {}

שים לב, שהערה זו היא המקבילה של מונגו ל- @יֵשׁוּת ב- JPA.

4.2. @שדה

עם @שדה, אנו יכולים להגדיר את שם השדה בו אנו רוצים להשתמש כאשר MongoDB ממשיך את המסמך:

משתמש במחלקת @Document {// ... @Field ("דוא"ל") מחרוזת emailAddress; // ...}

שים לב, שהערה זו היא המקבילה של מונגו ל- @טור ב- JPA.

4.3. @שאילתא

עם @שאילתא, אנו יכולים לספק שאילתת איתור בשיטת מאגר MongoDB:

@Query ("{'name':? 0}") רשימה findUsersByName (שם מחרוזת);

4.4. @EnableMongoRepositories

כדי להשתמש במאגרים של MongoDB, עלינו לציין זאת לאביב. אנחנו יכולים לעשות זאת עם @EnableMongoRepositories.

שים לב, שעלינו להשתמש בהערה זו עם @תְצוּרָה:

@Configuration @EnableMongoRepositories מחלקה MongoConfig {}

האביב יחפש מאגרים בחבילות המשנה של זה @תְצוּרָה מעמד. אנו יכולים לשנות התנהגות זו באמצעות ה- basePackages טַעֲנָה:

@Configuration @EnableMongoRepositories (basePackages = "com.baeldung.repository") מחלקה MongoConfig {}

כמו כן, שים לב ש- Spring Boot עושה זאת באופן אוטומטי אם הוא מוצא את Spring Data MongoDB על מסלול הכיתה.

5. מסקנה

במאמר זה ראינו מהן ההערות החשובות ביותר הדרושות לנו כדי להתמודד עם נתונים באופן כללי, באמצעות Spring. בנוסף, בדקנו את ההערות הנפוצות ביותר של JPA ו- MongoDB.

כרגיל, דוגמאות זמינות ב- GitHub כאן להערות נפוצות ו- JPA, וכאן להערות MongoDB.

הַבָּא » הערות שעועית אביבית « הערות תזמון אביב קודמות

$config[zx-auto] not found$config[zx-overlay] not found