PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

हजारों संस्थाओं को बनाए रखने का सबसे कारगर तरीका क्या है?

आपको बैच इंसर्ट का उपयोग करना होगा।

  1. कस्टम रिपॉजिटरी के लिए एक इंटरफ़ेस बनाएं SomeRepositoryCustom
public interface SomeRepositoryCustom {

    void batchSave(List<Record> records);

}
  1. SomeRepositoryCustom . का कार्यान्वयन बनाएं
@Repository
class SomesRepositoryCustomImpl implements SomeRepositoryCustom {

    private JdbcTemplate template;

    @Autowired
    public SomesRepositoryCustomImpl(JdbcTemplate template) {
        this.template = template;
    }

    @Override
    public void batchSave(List<Record> records) {
        final String sql = "INSERT INTO RECORDS(column_a, column_b) VALUES (?, ?)";

        template.execute(sql, (PreparedStatementCallback<Void>) ps -> {
            for (Record record : records) {
                ps.setString(1, record.getA());
                ps.setString(2, record.getB());
                ps.addBatch();
            }
            ps.executeBatch();
            return null;
        });
    }

}
  1. अपना JpaRepository बढ़ाएं SomeRepositoryCustom . के साथ
@Repository
public interface SomeRepository extends JpaRepository, SomeRepositoryCustom {

}

बचाने के लिए

someRepository.batchSave(records);

नोट

ध्यान रखें कि, यदि आप बैच इंसर्ट का भी उपयोग कर रहे हैं, तो डेटाबेस ड्राइवर उनका उपयोग नहीं करेगा। उदाहरण के लिए, MySQL के लिए, एक पैरामीटर जोड़ना आवश्यक है rewriteBatchedStatements=true डेटाबेस URL के लिए। सब कुछ सत्यापित करने के लिए ड्राइवर SQL लॉगिंग (हाइबरनेट नहीं) को सक्षम करने के लिए बेहतर है। ड्राइवर कोड डीबग करने के लिए भी उपयोगी हो सकता है।

आपको लूप में पैकेट द्वारा रिकॉर्ड को विभाजित करने के बारे में निर्णय लेने की आवश्यकता होगी

    for (Record record : records) { 

    }

एक ड्राइवर आपके लिए यह कर सकता है, इसलिए आपको इसकी आवश्यकता नहीं होगी। लेकिन इस चीज़ को भी डीबग करना बेहतर है।

अनुलेख var . का उपयोग न करें हर जगह।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्वेरी मिलान स्ट्रिंग टैग

  2. क्या PESSIMISTIC_WRITE पूरी टेबल को लॉक कर देता है?

  3. Postgresql:पासवर्ड के साथ स्क्रिप्टिंग psql निष्पादन

  4. अभिव्यक्ति सूचकांकों की उपयोगिता पर

  5. विशेषता `डीज़ल ::एक्सप्रेशन` को `बिगडेसिमल ::बिगडेसिमल` के लिए लागू नहीं किया गया है