बड़े ऑब्जेक्ट्स (LOBs) के साथ काम करना

Java में PostgreSQL डेटाबेस को क्वेरी करना

Miller Trujillo

Staff Software Engineer

डेटाबेस में Large Objects

  • BLOB: Binary Large Object (images, videos, PDFs)
  • CLOB: Character Large Object (लंबा टेक्स्ट, XML, JSON)

BLOB और CLOB का चित्रण

Java में PostgreSQL डेटाबेस को क्वेरी करना

BLOBs और CLOBs क्यों?

  • छोटे डेटा के लिए VARCHAR ठीक है
  • बहुत बड़े कंटेंट के लिए BLOB और CLOB बनाए गए हैं
  • स्ट्रीमिंग सपोर्ट: हिस्सों में पढ़ें/लिखें

उपमा - मूवी को स्ट्रीम करना

Java में PostgreSQL डेटाबेस को क्वेरी करना

Java में BLOB लिखना

String sql = "INSERT INTO covers (book_id, image) VALUES (?, ?)";


try (PreparedStatement pstmt = conn.prepareStatement(sql); FileInputStream fis = new FileInputStream("cover.png")) {
pstmt.setInt(1, 101);
pstmt.setBinaryStream(2, fis);
pstmt.executeUpdate();
}
  • INSERT - टेबल में नई पंक्तियाँ जोड़ता है
  • setBinaryStream() - बाइनरी डेटा को BLOB कॉलम में स्ट्रीम करता है
Java में PostgreSQL डेटाबेस को क्वेरी करना

Java में CLOB लिखना

String sql = "INSERT INTO manuscripts (book_id, content) VALUES (?, ?)";

try (PreparedStatement pstmt = conn.prepareStatement(sql);

FileReader reader = new FileReader("manuscript.txt")) {
pstmt.setInt(1, 101);
pstmt.setCharacterStream(2, reader);
pstmt.executeUpdate();
}

setCharacterStream() - टेक्स्ट डेटा को CLOB कॉलम में स्ट्रीम करता है

Java में PostgreSQL डेटाबेस को क्वेरी करना

Java में LOBs पढ़ना

  • InputStream बाइट्स पढ़ता है; Reader अक्षर पढ़ता है
  • BLOB: getBinaryStream() एक InputStream देता है
  • CLOB: getCharacterStream() एक Reader देता है
String sql = "SELECT image FROM covers WHERE book_id = ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
    pstmt.setInt(1, 101);
    try (ResultSet rs = pstmt.executeQuery()) {

if (rs.next()) {
try (InputStream is = rs.getBinaryStream("image");
FileOutputStream fos = new FileOutputStream("out.png")){
is.transferTo(fos);
} } } }
Java में PostgreSQL डेटाबेस को क्वेरी करना

Readers के साथ CLOBs पढ़ना

String sql = "SELECT content FROM manuscripts";
try (PreparedStatement pstmt = conn.prepareStatement(sql);
     ResultSet rs = pstmt.executeQuery()) {

while (rs.next()) {
try (Reader reader = rs.getCharacterStream("content")) {
char[] cb = new char[30];
reader.read(cb); // Chars from 0 to 29
reader.read(cb); // Chars from 30 to 59: } } }
Java में PostgreSQL डेटाबेस को क्वेरी करना

LOBs के लिए Best Practices

  • 📂 संदर्भ (जैसे URLs या paths) स्टोर करना बेहतर है
  • ⏩ स्ट्रीमिंग APIs इस्तेमाल करें (setBinaryStream(), getBinaryStream(), setCharacterStream())
  • 🚫 बहुत बड़े ऑब्जेक्ट्स को बार-बार अपडेट करने से बचें

$$

$$

बड़े ऑब्जेक्ट्स का चित्रण

Java में PostgreSQL डेटाबेस को क्वेरी करना

अभ्यास करते हैं!

Java में PostgreSQL डेटाबेस को क्वेरी करना

Preparing Video For Download...