انتقل إلى المحتوى
أمين أبوزيد
درس مخطط لهJNR-025-L02

المفاتيح المولَّدة والتنفيذ الدفعي (Batching)

  • الدرس 2 من 5
  • Junior
في هذا الدرس 4 موضوعات

هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.

نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.

في هذا الدرس

insert many rows quickly and read the ids the database created.

الموضوعات المخطط لها

  • The database often generates the id (identity column). Ask for it with RETURN_GENERATED_KEYS.
  • Each executeUpdate is one network round trip.
  • A batch collects many statements (addBatch) and sends them together (executeBatch).
  • Group batches (for example every 500 rows) so memory stays small.
  • Turn off auto-commit and commit once per chunk for more speed.
تفاصيل المخطط المبدئي

عرض عملي

java
c.setAutoCommit(false);
try (PreparedStatement ps = c.prepareStatement(
        "insert into product(name, price) values (?, ?)", Statement.RETURN_GENERATED_KEYS)) {
    for (Product p : products) {
        ps.setString(1, p.name());
        ps.setBigDecimal(2, p.price());
        ps.addBatch();
    }
    ps.executeBatch();
    try (ResultSet keys = ps.getGeneratedKeys()) { while (keys.next()) { /* keys.getLong(1) */ } }
}
c.commit();

اختبر فهمك

Why is a batch faster than a loop of single inserts?

أظهر الإجابة

Fewer network round trips.

التطبيق

طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.

المختبر والتمارين الاختبار

تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.

اكتب للبحث في المستويات والمراحل والوحدات والدروس.