English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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هو نوع من عدةميكانيزم الطلب على اتصال قاعدة البيانات. بمعنى آخر، يسهل التكرار، أي ذاكرة التخزين المؤقت للاتصالات بالقاعدة البيانات، يُسمى خزان الاتصال. يتحكم module pool في الطبقة فوق أي منتج JDBC القياسي.
يمكن أن يزيد من سرعة الوصول إلى البيانات ويقلل عدد اتصالات قاعدة البيانات التي يستخدمها التطبيق. يمكن أن يزيد أيضًا من أداء التطبيق. يقوم خزان الاتصال بتنفيذ المهام التالية:
إدارة الاتصالات المتاحة توزيع اتصال جديد إغلاق الاتصال
في الصورة السابقة، كان هناك عميل، خزان اتصال(بمائة اتصال متاح) و مصدر بيانات واحدالتكنولوجيا
في الصورة الأولى، وصلت ثلاثة عملاء إلى اتصالات مختلفة وكانت الاتصالات متاحة. في الصورة الثانية، تم قطع الاتصال بالعميل 3 وكان الاتصال متاحًا.
عندما ينتهي العملاء من العمل، سيتم إطلاق الاتصال، وسيكون هذا الاتصال متاحًا للعملاء الآخرين.
خزان الاتصال الافتراضي في 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 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 تلقائيًا. |
مقارنة JDBC مع Hibernate | JDBC |
HibernateJDBC هوالتكنولوجيا | . Hibernate هو ORM |
النموذج | في JDBC، يتحمل المستخدم المسؤولية عن إنشاء وإغلاق الاتصالات. |
في Hibernate، يتحمل النظام التشغيل المسؤولية عن إنشاء وإغلاق الاتصالات. | لا يدعم التحميل المتأخر. |
يدعم التحميل المتأخر، مما يوفر أداءً أفضل. | لا يدعم الاتصالات (ربط بين فئتين منفصلتين). |
يدعم الاتصالات.