English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot JDBC

Spring Boot JDBC يقدم أدوات و مكتبات لربط التطبيق بقاعدة البيانات JDBC.

في Spring Boot JDBC، مع Beans ذات صلة بقاعدة البيانات (مثل DataSource،JdbcTemplate و NamedParameterJdbcTemplate ) سيتم تكوينه وتنفيذه تلقائيًا أثناء بدء التشغيل. إذا أردنا استخدامها، يمكننا توصيل هذه الكلاسات تلقائيًا. على سبيل المثال:

@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

في application.properties في ملف، نحن نكوّن DataSource و خزان الاتصال. يختار Spring Boot الافتراضي tomcat خزان.

خزان الاتصال JDBC

خزان الاتصال JDBCهو نوع من عدةميكانيزم الطلب على اتصال قاعدة البيانات. بمعنى آخر، يسهل التكرار، أي ذاكرة التخزين المؤقت للاتصالات بالقاعدة البيانات، يُسمى خزان الاتصال. يتحكم module pool في الطبقة فوق أي منتج JDBC القياسي.

يمكن أن يزيد من سرعة الوصول إلى البيانات ويقلل عدد اتصالات قاعدة البيانات التي يستخدمها التطبيق. يمكن أن يزيد أيضًا من أداء التطبيق. يقوم خزان الاتصال بتنفيذ المهام التالية:

إدارة الاتصالات المتاحة توزيع اتصال جديد إغلاق الاتصال

في الصورة السابقة، كان هناك عميل، خزان اتصال(بمائة اتصال متاح) و مصدر بيانات واحدالتكنولوجيا

في الصورة الأولى، وصلت ثلاثة عملاء إلى اتصالات مختلفة وكانت الاتصالات متاحة. في الصورة الثانية، تم قطع الاتصال بالعميل 3 وكان الاتصال متاحًا.

عندما ينتهي العملاء من العمل، سيتم إطلاق الاتصال، وسيكون هذا الاتصال متاحًا للعملاء الآخرين.

HikariCP

خزان الاتصال الافتراضي في SpringBoot 2 هو HikariCP . يقدم إمكانيات جاهزة للشركات وسرعة أفضل. HikariCP هو تنفيذ المصدر لـ JDBC، يقدم ميكانيزم خزان الاتصال.

إذا كان HikariCP موجودًا في مسار الكلاسات، فإن Spring Boot سيقوم بتهيئةه تلقائيًا. إذا لم يتم العثور على HikariCP في مسار الكلاسات، فإن Spring Boot سيبحث خزان Tomcat JDBC. إذا كان موجودًا في مسار الكلاسات لـ Spring Boot، فإنه سيتم اختياره. إذا لم تتوفر هاتان الخياران، فإن Spring Boot يختار Apache Commons DBCP2 كخزان اتصال JDBC.

إذا كنا لا نريد استخدام خزان الاتصال الافتراضي، يمكننا أيضًا تكوين خزان الاتصال يدويًا. افترض أننا نريد استخدام خزان Tomcat JDBC بدلاً من HikariCP. سنقوم بإزالة HikariCP التكامل، وأضف إلى ملف pom.xml tomcat-jdbc التكامل، كما هو موضح أدناه.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</ artifactId >
<exclusions>
<exclusion>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</ artifactId >
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>9.0.10</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.9</version>
<socpe>runtime</scoope>
</dependency>

هذه الطريقة تجعلنا نستطيع استخدام خزان الاتصالات Tomcat دون الحاجة إلى كتابة @Configuration تحديد الكائن باستخدام البرمجة DataSource bean.

من جهة أخرى، يمكننا أيضًا تجاوز خوارزمية مسح خزانات الاتصالات المستخدمة في Spring Boot. يمكننا القيام بذلك عن طريق إضافة الخاصية في ملف application.properties spring.datasource.type لتحديد مصدر بيانات خزان الاتصالات بشكل واضح.

Spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

لقد قمنا بإنشاء خزان الاتصالات Tomcat. الآن، سنقوم application.properties إضافة بعض الخصائص لتحسين أداءها وتلبية بعض المتطلبات المحددة.

spring.datasource.tomcat.initial-size=20
spring.datasource.tomcat.max-wait=25000
spring.datasource.tomcat.max-active=70
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=9
spring.datasource.tomcat.default-auto-commit=true

إذا كنت ترغب في الاتصال بقاعدة بيانات MySQL، يجب أن تشمل محرك JDBC في مسار تطبيقك:

<!-- MySQL JDBC driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

بعد ذلك، في application.properties محددة في ملف datasoure الخصائص

إذا كنت تستخدم MySQL، استخدم الخاصية التاليةالأساسات البيانية:

spring.datasource.url=jdbc:mysql://192.168.1.4:3306/test
spring.datasource.username=w3codebox
spring.datasource.password=password

إذا كنت تستخدم Oracle للأساسات البيانية، استخدم الخاصية التالية:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=system
spring.datasource.password=Password123
ملاحظة: بافتراض الافتراض، يستخدم Spring Boot 2 HikariCP كمستودع الاتصالات بالقاعدة البيانات. إذا لم يكن HikariCP في مسار الكلاس، سيختار Spring Boot افتراضيًا Tomcat Pool.

لماذا يجب استخدام Spring Boot JDBC؟

يتم تنفيذ Spring JDBC و Spring Boot JDBC بنفس الطريقة. مقارنةً بـ Spring JDBC، يملك Spring Boot JBDC المزايا التالية:

Spring Boot JDBC Spring JDBC
يحتاج فقط إلى spring-boot-starter-jdbc إعتماداتفي Spring JDBC، يجب تكوين عدة إعتمادات، مثل spring-jdbc و spring-context
إذا لم يتم الحفاظ عليه بشكل واضح، سيتم تكوين Datasource bean تلقائيًا. إذا لم تريد استخدام bean، يمكنك تعديل الخاصية spring.datasource.initialize spring.datasource.initialize لإعداد التكنولوجياfalse في Spring JDBC، يجب استخدام XML أو javaconfig
إنشاء Bean لقاعدة البيانات.لا نحتاج إلى تسجيل bean النمذجة، لأن Spring Boot يقوم بتسجيلها تلقائيًا. يجب تسجيل bean النمذجة، مثل التكنولوجيا
PlatformTransactionManager،JDBCTemplate،NamedParameterJdbcTemplateسيتم تنفيذ جميع سكريpts لتحديث قاعدة البيانات التي يتم تخزينها في ملف .sql تلقائيًا.

إذا تم إنشاء أي سكريبتات لتحديث قاعدة البيانات (مثل حذف أو إنشاء جداول) في ملف SQL، فإنه يجب تقديم هذه المعلومات بشكل واضح في التكوين.

مقارنة JDBC مع Hibernate JDBC
HibernateJDBC هوالتكنولوجيا. Hibernate هو ORM
النموذجفي JDBC، يتحمل المستخدم المسؤولية عن إنشاء وإغلاق الاتصالات.
في Hibernate، يتحمل النظام التشغيل المسؤولية عن إنشاء وإغلاق الاتصالات.لا يدعم التحميل المتأخر.
يدعم التحميل المتأخر، مما يوفر أداءً أفضل.لا يدعم الاتصالات (ربط بين فئتين منفصلتين).

يدعم الاتصالات.