"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ऑरोरा पोस्टग्रेएसक्यूएल महारत: बुलेटप्रूफ जावा मॉडल और डीएओ जो आपकी टीम को खुशी से रोने पर मजबूर कर देंगे

ऑरोरा पोस्टग्रेएसक्यूएल महारत: बुलेटप्रूफ जावा मॉडल और डीएओ जो आपकी टीम को खुशी से रोने पर मजबूर कर देंगे

2024-11-08 को प्रकाशित
ब्राउज़ करें:369

सुनो, कोड जॉकी। मैं कुछ ज्ञान छोड़ने वाला हूं जो आपके ऑरोरा पोस्टग्रेएसक्यूएल गेम को शौकिया घंटे से बड़े लीग में बदल देगा। हम जावा मॉडल और डेटाबेस एक्सेसर्स के बारे में बात कर रहे हैं जो आपके वरिष्ठ डेवलपर्स को खुशी से रोने पर मजबूर कर देंगे और आपके डीबीए आपको बीयर खरीदेंगे या नहीं (यह इस बात पर निर्भर करता है कि आपकी उम्र कितनी है)।

यह क्यों मायने रखता है:

  1. प्रदर्शन: मैला मॉडल और डीएओ आपके बिजली की तेजी से चलने वाले ऑरोरा को शामक दवाओं के आलस में बदल सकते हैं।
  2. रखरखाव: इसे ठीक से प्राप्त करें, और भविष्य में आप एक धन्यवाद नोट भेजेंगे। इसे गलत समझें, और आप सुबह 3 बजे डिबगिंग करेंगे।
  3. स्केलेबिलिटी: ये पैटर्न बिना किसी परेशानी के लाखों रिकॉर्ड संभालने का आपका टिकट हैं।
  4. लागत दक्षता: कुशल कोड का मतलब है कम अरोरा लागत। आपका सीएफओ आपका नाम भी जान सकता है।

ऑरोरा पोस्टग्रेएसक्यूएल मॉडल और डीएओ के सुनहरे नियम:

  1. मॉडल महज़ बेवकूफ़ डेटा कंटेनर नहीं हैं: आपके मॉडलों को अपने जीवनयापन के लिए काम करना चाहिए, न कि केवल सुंदर दिखना चाहिए।
  2. डीएओ आपके डेटाबेस के बाउंसर हैं: वे तय करते हैं कि क्या अंदर जाएगा, क्या बाहर जाएगा, और यह कैसे होगा।
  3. जेडीबीसी की शक्ति को अपनाएं: ऑरोरा पोस्टग्रेएसक्यूएल धाराप्रवाह जेडीबीसी बोलता है। इसे वापस बोलना सीखें।
  4. अप्रत्याशित के लिए तैयारी करें: ऑरोरा विश्वसनीय है, लेकिन मर्फी का नियम अपराजित है। उन अपवादों को एक पेशेवर की तरह संभालें।

Aurora PostgreSQL Mastery: Bulletproof Java Models and DAOs That

अब, आइए इसे तोड़ें:

1. मॉडल

public class User {
    private UUID id;
    private String email;
    private String hashedPassword;
    private Instant createdAt;
    private Instant updatedAt;

    // Constructors, getters, and setters omitted for brevity

    public boolean isPasswordValid(String password) {
        // Implement password hashing and validation logic
    }

    public void updatePassword(String newPassword) {
        this.hashedPassword = // Hash the new password
        this.updatedAt = Instant.now();
    }

    // Other business logic methods
}

यह क्यों काम करता है:

  • यह सिर्फ एक डेटा बैग नहीं है। इसमें ऐसे तरीके हैं जो व्यावसायिक तर्क को समाहित करते हैं।
  • यह उपयुक्त डेटा प्रकारों (आईडी के लिए यूयूआईडी, टाइमस्टैम्प के लिए इंस्टेंट) का उपयोग करता है।
  • यह अपना पासवर्ड सत्यापन और अद्यतन करने का कार्य स्वयं संभालता है।

2. डीएओ इंटरफ़ेस

public interface UserDao {
    Optional findById(UUID id);
    List findByEmail(String email);
    void save(User user);
    void update(User user);
    void delete(UUID id);
    List findRecentUsers(int limit);
}

यह चट्टानें क्यों:

  • यह साफ़ और सटीक है।
  • यह संभावित रूप से अनुपस्थित परिणामों के लिए वैकल्पिक का उपयोग करता है।
  • इसमें बुनियादी सीआरयूडी और अधिक जटिल संचालन का मिश्रण शामिल है।

3. डीएओ कार्यान्वयन

public class AuroraPostgresUserDao implements UserDao {
    private final DataSource dataSource;

    public AuroraPostgresUserDao(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    @Override
    public Optional findById(UUID id) {
        String sql = "SELECT * FROM users WHERE id = ?";
        try (Connection conn = dataSource.getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setObject(1, id);
            try (ResultSet rs = pstmt.executeQuery()) {
                if (rs.next()) {
                    return Optional.of(mapResultSetToUser(rs));
                }
            }
        } catch (SQLException e) {
            throw new DatabaseException("Error finding user by ID", e);
        }
        return Optional.empty();
    }

    @Override
    public void save(User user) {
        String sql = "INSERT INTO users (id, email, hashed_password, created_at, updated_at) VALUES (?, ?, ?, ?, ?)";
        try (Connection conn = dataSource.getConnection();
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            pstmt.setObject(1, user.getId());
            pstmt.setString(2, user.getEmail());
            pstmt.setString(3, user.getHashedPassword());
            pstmt.setTimestamp(4, Timestamp.from(user.getCreatedAt()));
            pstmt.setTimestamp(5, Timestamp.from(user.getUpdatedAt()));
            pstmt.executeUpdate();
        } catch (SQLException e) {
            throw new DatabaseException("Error saving user", e);
        }
    }

    // Other method implementations...

    private User mapResultSetToUser(ResultSet rs) throws SQLException {
        return new User(
            (UUID) rs.getObject("id"),
            rs.getString("email"),
            rs.getString("hashed_password"),
            rs.getTimestamp("created_at").toInstant(),
            rs.getTimestamp("updated_at").toInstant()
        );
    }
}

यह प्रतिभा क्यों है:

  • यह SQL इंजेक्शन को रोकने के लिए तैयार कथनों का उपयोग करता है।
  • यह संसाधनों के साथ प्रयास करके संसाधन प्रबंधन को ठीक से संभालता है।
  • यह जावा प्रकारों और PostgreSQL प्रकारों के बीच सही ढंग से मैप करता है।
  • यह स्टैक को बेहतर ढंग से संभालने में त्रुटि के लिए एक कस्टम अपवाद फेंकता है।

मिलियन-डॉलर युक्तियाँ:

1. कनेक्शन पूलिंग का उपयोग करें

अरोड़ा बहुत सारे कनेक्शन संभाल सकता है, लेकिन फिजूलखर्ची न करें। कनेक्शन पूलिंग के लिए HibariCP या समान का उपयोग करें।

2. थोक कार्रवाइयों के लिए बैच संचालन

जब आपको कई रिकॉर्ड सम्मिलित करने या अपडेट करने की आवश्यकता हो, तो बैच संचालन का उपयोग करें।

public void saveUsers(List users) {
    String sql = "INSERT INTO users (id, email, hashed_password, created_at, updated_at) VALUES (?, ?, ?, ?, ?)";
    try (Connection conn = dataSource.getConnection();
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
        for (User user : users) {
            pstmt.setObject(1, user.getId());
            pstmt.setString(2, user.getEmail());
            pstmt.setString(3, user.getHashedPassword());
            pstmt.setTimestamp(4, Timestamp.from(user.getCreatedAt()));
            pstmt.setTimestamp(5, Timestamp.from(user.getUpdatedAt()));
            pstmt.addBatch();
        }
        pstmt.executeBatch();
    } catch (SQLException e) {
        throw new DatabaseException("Error batch saving users", e);
    }
}

Aurora PostgreSQL Mastery: Bulletproof Java Models and DAOs That

3. ऑरोरा की पढ़ी गई प्रतिकृतियों का लाभ उठाएं

लोड फैलाने के लिए रीड ऑपरेशन के लिए एक अलग डेटा स्रोत का उपयोग करें।

4. लेन-देन को नजरअंदाज न करें

उन परिचालनों के लिए लेनदेन का उपयोग करें जिन्हें परमाणु होना आवश्यक है।

public void transferMoney(UUID fromId, UUID toId, BigDecimal amount) {
    String debitSql = "UPDATE accounts SET balance = balance - ? WHERE id = ?";
    String creditSql = "UPDATE accounts SET balance = balance   ? WHERE id = ?";
    try (Connection conn = dataSource.getConnection()) {
        conn.setAutoCommit(false);
        try (PreparedStatement debitStmt = conn.prepareStatement(debitSql);
             PreparedStatement creditStmt = conn.prepareStatement(creditSql)) {
            debitStmt.setBigDecimal(1, amount);
            debitStmt.setObject(2, fromId);
            debitStmt.executeUpdate();

            creditStmt.setBigDecimal(1, amount);
            creditStmt.setObject(2, toId);
            creditStmt.executeUpdate();

            conn.commit();
        } catch (SQLException e) {
            conn.rollback();
            throw new DatabaseException("Error transferring money", e);
        } finally {
            conn.setAutoCommit(true);
        }
    } catch (SQLException e) {
        throw new DatabaseException("Error managing transaction", e);
    }
}

Aurora PostgreSQL Mastery: Bulletproof Java Models and DAOs That

5. ऑरोरा-विशिष्ट सुविधाओं का उपयोग करें

परीक्षण के लिए ऑरोरा की तेज़ क्लोनिंग और अपने कनेक्शन प्रबंधन में इसकी बेहतर फेलओवर क्षमताओं का लाभ उठाएं।

तल - रेखा:

ऑरोरा पोस्टग्रेएसक्यूएल के लिए रॉक-सॉलिड जावा मॉडल और डीएओ बनाना केवल काम करने वाला कोड लिखने के बारे में नहीं है। यह एक ऐसी डेटा परत तैयार करने के बारे में है जो मजबूत, कुशल और आप जो कुछ भी इस पर फेंकते हैं उसके लिए तैयार है।

याद रखें, आपके मॉडल और डीएओ आपके एप्लिकेशन की नींव हैं। उन्हें सही करें, और आप सफलता के लिए खुद को स्थापित कर रहे हैं। उन्हें गलत समझें, और आप क्विकसैंड पर निर्माण कर रहे हैं।

अब पढ़ना बंद करें और कोडिंग शुरू करें। आपका ऑरोरा पोस्टग्रेएसक्यूएल डेटाबेस नियंत्रित होने की प्रतीक्षा कर रहा है।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/nislamov/aurora-postgresql-mastery-bulletproof-java-models-and-daos-thatll-make-your-team-weep-with-joy-1jkb?1 कोई भी उल्लंघन, हटाने के लिए कृपया [email protected] से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3