שיחות נהלים מאוחסנים ממאגרי JPA של Spring Data

1. סקירה כללית

הליך מאוחסן הוא קבוצה של הצהרות SQL מוגדרות מראש המאוחסנות במסד הנתונים. ב- Java ישנן מספר דרכים לגשת להליכים המאוחסנים. במדריך זה נראה כיצד להתקשר להליכים מאוחסנים ממאגרי JPA של Spring Data.

2. הגדרת פרויקט

במדריך זה, נשתמש במודול ה- JPA Starter Spring Spring בתור שכבת הגישה לנתונים. אנו נשתמש גם ב- MySQL כמאגר המידע שלנו. לכן, אנו זקוקים לתלות מחברי JPA, Spring Data JDBC ו- MySQL בפרויקט שלנו pom.xml קוֹבֶץ:

 org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-data-jdbc mysql mysql-connector-java 

ברגע שיש לנו את הגדרת התלות של MySQL, נוכל להגדיר את חיבור מסד הנתונים ב- application.properties קוֹבֶץ:

spring.datasource.url = jdbc: mysql: // localhost: 3306 / baeldung spring.datasource.username = baeldung spring.datasource.password = baeldung

3. מחלקת ישויות

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

רכב בכיתה ציבורית @Entity {@Id @GeneratedValue (אסטרטגיה = GenerationType.IDENTITY) מזהה פרטי פרטי של טור עמודה; מודל מחרוזת פרטי של עמוד @; @Column שנה פרטית שלמה; // סטרים וקובעים סטנדרטיים}

4. יצירת נוהל מאוחסן

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

צור נוהל FIND_CARS_AFTER_YEAR (IN year_in INT) התחל בחר * ממכונית WHERE שנה> = year_in סדר לפי שנה; סוֹף

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

צור נוהל GET_TOTAL_CARS_BY_MODEL (IN model_in VARCHAR (50), OUT count_out INT) BEGIN SELECT COUNT (*) into count_out from car WHERE model = model_in; סוֹף

5. נהלים מאוחסנים בהתייחסות במאגר

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

ממשק ציבורי @Repository CarRepository מרחיב את JpaRepository {// ...} 

לאחר מכן, בואו להוסיף כמה שיטות למאגר שלנו שקוראים לנהלים המאוחסנים.

5.1. מיפוי ישיר של שם נוהל מאוחסן

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

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

@Procedure int GET_TOTAL_CARS_BY_MODEL (מודל מחרוזת); 

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

@Procedure ("GET_TOTAL_CARS_BY_MODEL") int getTotalCarsByModel (מודל מחרוזת); 

אנחנו יכולים גם להשתמש ב- procedureName תכונה למיפוי שם ההליך המאוחסן:

@Procedure (procedureName = "GET_TOTAL_CARS_BY_MODEL") int getTotalCarsByModelProcedureName (מודל מחרוזת); 

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

@Procedure (value = "GET_TOTAL_CARS_BY_MODEL") int getTotalCarsByModelValue (מודל מחרוזת); 

5.2. התייחס לנוהל מאוחסן המוגדר בישות

אנחנו יכולים גם להשתמש ב- @NamedStoredProcedureQuery ביאור להגדרת הליך מאוחסן במחלקת הישויות:

@Entity @NamedStoredProcedureQuery (name = "Car.getTotalCardsbyModelEntity", procedureName = "GET_TOTAL_CARS_BY_MODEL", parameters = {@StoredProcedureParameter (mode = ParameterMode.IN, name = "model_in", type = String = String. String). .OUT, name = "count_out", type = Integer.class)}) רכב בכיתה ציבורית {// הגדרת כיתה}

לאחר מכן, אנו יכולים להתייחס להגדרה זו במאגר:

@Procedure (name = "Car.getTotalCardsbyModelEntity") int getTotalCarsByModelEntiy (@Param ("model_in") מודל מחרוזת); 

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

5.3. התייחס לנוהל מאוחסן עם @שאילתא ביאור

אנו יכולים גם להתקשר להליך מאוחסן ישירות באמצעות ה- @שאילתא ביאור:

@Query (value = "CALL FIND_CARS_AFTER_YEAR (: year_in);", nativeQuery = true) רשימת findCarsAfterYear (@Param ("year_in") שנה שלמה_in);

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

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

6. סיכום

במדריך זה הראינו כיצד לגשת להליכים המאוחסנים דרך מאגרי JPA. כמו כן, דנו בשתי דרכים פשוטות להפניה להליכים המאוחסנים במאגרי JPA.

כמו תמיד, קוד המקור של המאמר זמין באתר GitHub.


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