Java Database Connectivity
জাভা ডাটাবেস কানেক্টিভিটি (জেডিবিসি) হল জাভা প্রোগ্রামিং ভাষার জন্য একটি অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (এপিআই) যা একটি ক্লায়েন্ট কীভাবে একটি ডাটাবেস অ্যাক্সেস করতে পারে তা নির্ধারণ করে। এটি একটি জাভা-ভিত্তিক ডেটা অ্যাক্সেস প্রযুক্তি যা জাভা ডাটাবেস সংযোগের জন্য ব্যবহৃত হয়। এটি ওরাকল কর্পোরেশনের জাভা স্ট্যান্ডার্ড সংস্করণ প্ল্যাটফর্মের অংশ। এটি একটি ডাটাবেসে তথ্য অনুসন্ধান এবং আপডেট করার পদ্ধতি সরবরাহ করে এবং রিলেশনাল ডেটাবেসের দিকে দৃষ্টি নিবদ্ধ করে। একটি জে. ডি. বি. সি-থেকে-ও. ডি. বি. সি সেতু জাভা ভার্চ্যুয়াল মেশিন (জে. ভি. এম) হোস্ট পরিবেশে যে কোনও ও. ডি. বি. সি-অ্যাক্সেসযোগ্য ডেটা উৎসের সাথে সংযোগ সক্ষম করে। ইতিহাস এবং বাস্তবায়ন সান মাইক্রোসিস্টেমস 19শে ফেব্রুয়ারী, 1997-এ জাভা ডেভেলপমেন্ট কিট (জেডিকে) 1.1-এর অংশ হিসাবে জেডিবিসি প্রকাশ করে। তারপর থেকে এটি জাভা প্ল্যাটফর্ম, স্ট্যান্ডার্ড সংস্করণের (জাভা এসই) অংশ। জে. ডি. বি. সি ক্লাসগুলি জাভা প্যাকেজে রয়েছে। সংস্করণ 3.1 থেকে শুরু করে, জে. ডি. বি. সি জাভা কমিউনিটি প্রসেসের অধীনে তৈরি করা হয়েছে। জে. এস. আর 54 নির্দিষ্ট করে জে. ডি. বি. সি 3 (জে2এসই 1.4-এ অন্তর্ভুক্ত), জে. এস. আর 114 নির্দিষ্ট করে জে. ডি. বি. সি রোসেট সংযোজন, এবং জে. এস. আর 221 হল জে. ডি. বি. সি 4 (জাভা এস. ই 6-এ অন্তর্ভুক্ত)-এর নির্দিষ্টকরণ। জেডিবিসি 4.1, জেএসআর 221-এর একটি রক্ষণাবেক্ষণ রিলিজ 1 দ্বারা নির্দিষ্ট করা হয়েছে এবং জাভা এসই 7-এ অন্তর্ভুক্ত করা হয়েছে। জেডিবিসি 4.2, জেএসআর 221-এর একটি রক্ষণাবেক্ষণ রিলিজ 2 দ্বারা নির্দিষ্ট করা হয়েছে এবং জাভা এসই 8-এ অন্তর্ভুক্ত করা হয়েছে। সর্বশেষ সংস্করণ, জেডিবিসি 4.3, জেএসআর 221-এর একটি রক্ষণাবেক্ষণ রিলিজ 3 দ্বারা নির্দিষ্ট করা হয়েছে এবং জাভা এসই 9-এ অন্তর্ভুক্ত করা হয়েছে। কার্যকারিতা যেহেতু জেডিবিসি ('জাভা ডাটাবেস কানেক্টিভিটি') বেশিরভাগ ইন্টারফেস সংজ্ঞা এবং নির্দিষ্টকরণের একটি সংগ্রহ, এটি এই ইন্টারফেসের একাধিক বাস্তবায়নের অস্তিত্ব এবং রানটাইমে একই অ্যাপ্লিকেশন দ্বারা ব্যবহার করার অনুমতি দেয়। এপিআই গতিশীলভাবে সঠিক জাভা প্যাকেজগুলি লোড করার এবং জে. ডি. বি. সি ড্রাইভার ম্যানেজারের () সাথে তাদের নিবন্ধনের জন্য একটি প্রক্রিয়া প্রদান করে। জেডিবিসি সংযোগ তৈরির জন্য একটি কারখানা হিসাবে ব্যবহৃত হয়। জেডিবিসি সংযোগগুলি বিবৃতি তৈরি এবং কার্যকর করতে সহায়তা করে। জেডিবিসি সংযোগগুলি এসকিউএল-এর ক্রিয়েট, ইনসার্ট, আপডেট এবং ডিলিটের মতো আপডেট বিবৃতি বা বাছাইয়ের মতো প্রশ্ন বিবৃতিগুলিকে সমর্থন করে। উপরন্তু, সংরক্ষিত পদ্ধতিগুলি একটি জেডিবিসি সংযোগের মাধ্যমে আহ্বান করা যেতে পারে। জে. ডি. বি. সি নিম্নলিখিত শ্রেণীগুলির মধ্যে একটি ব্যবহার করে বিবৃতি উপস্থাপন করেঃ-প্রতিবার ডাটাবেস সার্ভারে পাঠানো হয়। অন্য কথায়, ডেটা ধারণকারী একটি বস্তু পেতে এসকিউএল বিবৃতি ব্যবহার করে পদ্ধতিগুলি কার্যকর করা হয়। - ইন্টারফেসের একটি সাব-ইন্টারফেস। বিবৃতিটি ক্যাশে করা হয় এবং তারপরে কার্যকর করার পথটি ডাটাবেস সার্ভারে পূর্বনির্ধারিত হয়, এটি একটি দক্ষ পদ্ধতিতে একাধিকবার কার্যকর করার অনুমতি দেয়। প্রাক-সংকলিত এসকিউএল বিবৃতিগুলি কার্যকর করতে ব্যবহৃত হয়। পূর্ব-সংকলিত বিবৃতিগুলি চালানো বিবৃতি সম্পাদনের দক্ষতা এবং কর্মক্ষমতা বাড়ায়। এটি প্রায়শই গতিশীল বিবৃতির জন্য ব্যবহৃত হয় যেখানে কিছু ইনপুট পরামিতি লক্ষ্য ডাটাবেসে পাস করতে হবে। কোয়েরি প্যারামিটারের উপর নির্ভর করে ডায়নামিক কোয়েরিকে পরিবর্তিত হতে দেয়। - ইন্টারফেসের একটি সাব-ইন্টারফেস। এটি ডাটাবেসে সংরক্ষিত পদ্ধতিগুলি কার্যকর করার জন্য ব্যবহৃত হয়। সঞ্চিত পদ্ধতির জন্য ইনপুট এবং আউটপুট উভয় পরামিতিই অবশ্যই ডাটাবেসে প্রেরণ করতে হবে। আপডেট বিবৃতি যেমন INSERT, UPDATE এবং DELETE একটি আপডেট গণনা প্রদান করে যা একটি পূর্ণসংখ্যা হিসাবে ডাটাবেসে প্রভাবিত সারির সংখ্যা নির্দেশ করে। এই বিবৃতিগুলি অন্য কোনও তথ্য প্রদান করে না। প্রশ্ন বিবৃতি একটি জে. ডি. বি. সি সারির ফলাফল সেট প্রদান করে। সারির ফলাফল সেটটি ফলাফল সেটের উপর দিয়ে যেতে ব্যবহৃত হয়। একটি সারিতে পৃথক কলামগুলি নাম বা কলাম নম্বর দ্বারা পুনরুদ্ধার করা হয়। ফলাফলের সেটটিতে যে কোনও সংখ্যক সারি থাকতে পারে। সারির ফলাফলের সেটটিতে মেটাডেটা রয়েছে যা কলামগুলির নাম এবং তাদের প্রকার বর্ণনা করে। মূল জেডিবিসি এপিআই-এর একটি এক্সটেনশন রয়েছে। জে. ডি. বি. সি সংযোগগুলি প্রায়শই সরাসরি চালকের কাছ থেকে পাওয়ার পরিবর্তে সংযোগ পুলের মাধ্যমে পরিচালিত হয়। উদাহরণস্বরূপ, যখন কোনও জাভা অ্যাপ্লিকেশনের একটি ডাটাবেস সংযোগের প্রয়োজন হয়, তখন একটি জেডিবিসি তৈরি করতে DriverManager.getConnection () পদ্ধতির একটি ব্যবহার করা হয়। ব্যবহৃত ইউআরএল নির্দিষ্ট ডাটাবেস এবং জেডিবিসি ড্রাইভারের উপর নির্ভরশীল। এটি সর্বদা "জেডিবিসিঃ" প্রোটোকল দিয়ে শুরু হবে, তবে বাকিটা নির্দিষ্ট বিক্রেতার উপর নির্ভর করে। সংযোগ সংযোগ = DriverManager.getConnection ("জে. ডি. বি. সি.: কিছু জে. ডি. বি. সি. বিক্রেতার প্রয়োজনীয় অন্যান্য তথ্য", "মাই লগইন", "মাইপাসওয়ার্ড"); চেষ্টা করুন {/* আপনি এখানে সংযোগটি ব্যবহার করুন অবশেষে {// সংযোগটি বন্ধ করা গুরুত্বপূর্ণ যখন আপনি এটি দিয়ে সম্পন্ন করেন তখন চেষ্টা করুন {conn.close ();} ধরা (নিক্ষেপযোগ্য ই) {/* এর পরিবর্তে মূল ব্যতিক্রমটি প্রচার করুন যা আপনি কেবল লগ করতে চান */logger.warn ("জে. ডি. বি. সি সংযোগ বন্ধ করতে পারেননি", ই);} জাভা এস. ই. 7 থেকে শুরু করে আপনি জাভার ট্রাই-উইথ-রিসোর্স বিবৃতি ব্যবহার করতে পারেন। চেষ্টা করুন (স্টেটমেন্ট স্ট্যাম্ট = conn.createStatement ()) {stmt.executeUpdate ("ইনসার্ট ইনটু মাইটেবল (নাম) ভ্যালুজ ('আমার নাম')");} লক্ষ্য করুন যে এস, এস এবং এস প্রায়শই অপারেটিং সিস্টেম রিসোর্স যেমন সকেট বা ফাইল বর্ণনাকারীকে সংযুক্ত করে। দূরবর্তী ডাটাবেস সার্ভারের ক্ষেত্রে, আরও সংস্থানগুলি সার্ভারে সংযুক্ত থাকে, যেমন। বর্তমানে খোলা এস-এর জন্য কার্সার। যে কোনও জে. ডি. বি. সি অবজেক্ট তার ভূমিকা পালন করার সাথে সাথে () বন্ধ করা অত্যাবশ্যক; আবর্জনা সংগ্রহের উপর নির্ভর করা উচিত নয়। উপরের ট্রাই-উইথ-রিসোর্সেস গঠনটি একটি কোড প্যাটার্ন যা এটিকে বাদ দেয়। একটি ডাটাবেস অনুসন্ধান প্রক্রিয়া ব্যবহার করে ডাটাবেস থেকে তথ্য পুনরুদ্ধার করা হয়। নীচের উদাহরণটি একটি বিবৃতি তৈরি এবং একটি প্রশ্ন কার্যকর করতে দেখায়। চেষ্টা করুন (স্টেটমেন্ট stmt = conn.createStatement (); রেজাল্টসেট rs = stmt.executeQuery ("SELECT * FROM MyTables")) {যখন (rs.next ()) {int numColumns = rs.getMetaData (). GetColumnCꯥꯎꯟꯠ (); (int i = 1; i <= numColumns; i + +) {// কলাম সংখ্যা 1 থেকে শুরু হয়। //এছাড়াও, একটি নির্দিষ্ট প্রকার হিসাবে কলামটি ফেরত দেওয়ার জন্য সেট করা ফলাফলের অনেক পদ্ধতি রয়েছে। বৈধ রূপান্তরের তালিকার জন্য সান ডকুমেন্টেশন দেখুন। System.out.println ("COLUMN" + i + "=" + rs.getObject (i));}} নিম্নলিখিত কোডটি একটি প্রস্তুত বিবৃতি প্রশ্নের একটি উদাহরণ যা প্রথম উদাহরণ থেকে কন এবং ক্লাস ব্যবহার করেঃ চেষ্টা করুন (প্রস্তুত বিবৃতি ps = conn.prepareStatement ("নির্বাচন i")। *, জে। * 'ওমেগা আই' থেকে, 'জাপ্পা জে' কোথায় i.name =? এবং j.num =? ") ) {// এসকিউএল বিবৃতি প্রস্তুত করার সময়, প্রতিটি প্রশ্ন চিহ্ন একটি স্থানধারক// যা অবশ্যই একটি "সেট" পদ্ধতির মাধ্যমে প্রদত্ত মান দিয়ে প্রতিস্থাপন করতে হবে। //নিম্নলিখিত দুটি পদ্ধতি কল দুটি স্থানধারককে প্রতিস্থাপন করে; প্রথমটি একটি স্ট্রিং মান দ্বারা প্রতিস্থাপিত হয় এবং দ্বিতীয়টি একটি পূর্ণসংখ্যা মান দ্বারা প্রতিস্থাপিত হয়। ps.setString (1, "দরিদ্র ইওরিক"); ps.setInt (2,8008);// ফলাফল সেট, rs, এসকিউএল বিবৃতি কার্যকর করার ফলাফল প্রকাশ করে। //প্রতিবার যখন আপনি rs.next () কল করেন, তখন একটি অভ্যন্তরীণ সারি পয়েন্টার, বা কার্সার,// ফলাফলের পরবর্তী সারিতে অগ্রসর হয়। কার্সারটি প্রাথমিকভাবে প্রথম সারির আগে// অবস্থিত। চেষ্টা করুন (রেজাল্টসেট rs = ps.executeQuery ()) {যখন (rs.next ()) {int numColumns = rs.getMetaData (). for (int i = 1; i <= numColumns; i + +) {// কলাম সংখ্যা 1 থেকে শুরু হয়। //এছাড়াও, একটি নির্দিষ্ট প্রকার হিসাবে কলামটি ফেরত দেওয়ার জন্য সেট করা ফলাফলের অনেক পদ্ধতি রয়েছে। বৈধ রূপান্তরের তালিকার জন্য সান ডকুমেন্টেশন দেখুন। System.out.println ("COLUMN" + i + "=" + rs.getObject (i));}// জন্য}// যখন}// চেষ্টা করুন// চেষ্টা করুন যদি কোনও ডাটাবেস অপারেশন ব্যর্থ হয়, তবে জেডিবিসি একটি উত্থাপন করে। যতটা সম্ভব বিস্তারিতভাবে লগ ইন করা ছাড়া, এই ধরনের ত্রুটি থেকে পুনরুদ্ধারের জন্য সাধারণত খুব কমই করা যায়। এটি সুপারিশ করা হয় যে এটি একটি অ্যাপ্লিকেশন ডোমেন ব্যতিক্রম (একটি অনির্বাচিত)-এ অনুবাদ করা উচিত যার ফলস্বরূপ শেষ পর্যন্ত একটি লেনদেন রোলব্যাক এবং ব্যবহারকারীকে একটি বিজ্ঞপ্তি দেওয়া হয়। নিম্নলিখিত কোডটি একটি ডাটাবেস লেনদেনের একটি উদাহরণ হলঃ বুলিয়ান অটোকমমিটডিফল্ট = conn.getAutoCommit (); চেষ্টা করুন {conn.setAutoCommit (মিথ্যা);/* আপনি এখানে লেনদেনের মাধ্যমে কন-এর বিরুদ্ধে বিবৃতি কার্যকর করেন */conn.commit ();} ক্যাচ (নিক্ষেপযোগ্য ই) {চেষ্টা করুন {conn.rollback ();} ক্যাচ (নিক্ষেপযোগ্য ই) {logger.warn ("লেনদেনটি রোলব্যাক করতে পারেনি", ই);} থ্রো ই;} অবশেষে {চেষ্টা করুন {conn.setAutoCommit (অটোকমমিটডিফল্ট);} ক্যাচ (নিক্ষেপযোগ্য ই) {logger.warn ("অটোকমমিট সেটিং পুনরুদ্ধার করতে পারেনি", ই);} একটি কলের উদাহরণের জন্য ইম্পোর্ট java.sql.Connection; ইম্পোর্ট java.sql.DriverManager; ইম্পোর্ট java.sql.Statement; পাবলিক ক্লাস মাইডিবি1 {স্ট্যাটিক স্ট্রিং ইউআরএল = "জেডিবিসিঃ মাইএসকিউএলঃ// লোকালহোস্ট/মাইডিবি"; পাবলিক স্ট্যাটিক অকার্যকর মেইন (স্ট্রিং [] আর্গস) {ট্রাই {Class.forName ("com.mysql.jdbc.Driver"); সংযোগ কন = DriverManager.getConnection (ইউআরএল, "রুট", "রুট"); স্টেটমেন্ট স্ট্যাম্ট = conn.createStatement (); স্ট্রিং এসকিউএল = "ইনসার্ট ইন্টো এম্প1 ভ্যালুয়েস" ('pctb5361', 'কিরিল', 'জন', 96866668) প্রকার বাণিজ্যিক এবং বিনামূল্যে ড্রাইভারগুলি বেশিরভাগ রিলেশনাল-ডাটাবেস সার্ভারগুলিতে সংযোগ প্রদান করে। এই ড্রাইভারগুলি নিম্নলিখিত ধরনের একটির মধ্যে পড়েঃ টাইপ 1 যা স্থানীয়ভাবে উপলব্ধ ওডিবিসি ড্রাইভারের নেটিভ কোড কল করে। (দ্রষ্টব্যঃ জে. ডি. বি. সি 4.2-এ, জে. ডি. বি. সি-ও. ডি. বি. সি ব্রিজ সরানো হয়েছে) টাইপ 2 যা ক্লায়েন্টের দিকে ডাটাবেস বিক্রেতার স্থানীয় গ্রন্থাগারকে কল করে। এই কোডটি তারপর নেটওয়ার্কের মাধ্যমে ডাটাবেসের সাথে কথা বলে। টাইপ 3, বিশুদ্ধ-জাভা ড্রাইভার যা সার্ভার-সাইড মিডলওয়্যারের সাথে কথা বলে যা তারপর ডাটাবেসের সাথে কথা বলে। টাইপ 4, বিশুদ্ধ-জাভা ড্রাইভার যা ডাটাবেস নেটিভ প্রোটোকল ব্যবহার করে। জাভা-সক্ষম এসকিউএল ডাটাবেসে জেআরই-এর সাথে এম্বেড করা একটি ড্রাইভার-একটি অভ্যন্তরীণ জেডিবিসি ড্রাইভার নামে একটি প্রকারও লক্ষ্য করুন। এটি জাভা সংরক্ষিত পদ্ধতির জন্য ব্যবহৃত হয়। এটি উপরের শ্রেণীবিভাগ পরিকল্পনার সাথে খাপ খায় না, যদিও এটি সম্ভবত টাইপ 2 বা টাইপ 4 ড্রাইভারের সাথে সাদৃশ্যপূর্ণ (ডাটাবেসটি নিজেই জাভাতে প্রয়োগ করা হয়েছে কি না তার উপর নির্ভর করে)। এর একটি উদাহরণ হল কে. পি. আর. বি (কার্নেল প্রোগ্রাম বান্ডেল্ড) ড্রাইভার যা ওরাকল আর. ডি. বি. এম. এস-এর সাথে সরবরাহ করা হয়। "জেডিবিসিঃ ডিফল্টঃ সংযোগ" এই ধরনের সংযোগ তৈরির একটি তুলনামূলকভাবে আদর্শ উপায় প্রদান করে (অন্তত ওরাকল ডাটাবেস এবং অ্যাপাচি ডার্বি এটি সমর্থন করে)। যাইহোক, একটি অভ্যন্তরীণ জেডিবিসি ড্রাইভারের ক্ষেত্রে, জেডিবিসি ক্লায়েন্ট আসলে অ্যাক্সেস করা ডাটাবেসের অংশ হিসাবে চলে এবং তাই নেটওয়ার্ক প্রোটোকলের পরিবর্তে সরাসরি ডেটা অ্যাক্সেস করতে পারে। সূত্রগুলি ওরাকল কিছু জেডিবিসি ড্রাইভার এবং বিক্রেতাদের একটি তালিকা সরবরাহ করে সিম্বা টেকনোলজিস বিভিন্ন অ্যাপ্লিকেশন, ডেটাবেস এবং ওয়েব এপিআই-এর জন্য যে কোনও কাস্টম/মালিকানাধীন সম্পর্কিত ডেটা উত্স সিডিটা সফ্টওয়্যার শিপ টাইপ 4 জেডিবিসি ড্রাইভারের জন্য কাস্টম জেডিবিসি ড্রাইভার তৈরির জন্য একটি এসডিকে পাঠায়। অ্যাপ্লিকেশন, ডাটাবেস এবং ওয়েব পরিষেবাগুলির জন্য আর. এস. এস. বাস টাইপ 4 জে. ডি. বি. সি ড্রাইভার ডেটাডাইরেক্ট টেকনোলজিস সমস্ত প্রধান ডাটাবেসের জন্য দ্রুত টাইপ 4 জে. ডি. বি. সি ড্রাইভারের একটি বিস্তৃত স্যুট সরবরাহ করে যা তারা টাইপ 5 আই. ডি. এস সফ্টওয়্যার হিসাবে বিজ্ঞাপন দেয় যা সমস্ত প্রধান ডেটাবেসে একযোগে অ্যাক্সেসের জন্য একটি টাইপ 3 জে. ডি. বি. সি ড্রাইভার সরবরাহ করে। সমর্থিত বৈশিষ্ট্যগুলির মধ্যে রয়েছে ফলাফল ক্যাশিং, এসএসএল এনক্রিপশন, কাস্টম ডেটা সোর্স, ডিবিশীল্ড জেডিবি অ্যাক্সেস মাইএসকিউএল এবং ওরাকলের জন্য একটি জাভা অধ্যবসায় লাইব্রেরি যা জেডিবিসি জেনেটডাইরেক্টের উপরে একটি সহজ ব্যবহারযোগ্য এপিআইতে প্রধান ডাটাবেস অ্যাক্সেস অপারেশনগুলিকে সংজ্ঞায়িত করে যা সম্পূর্ণ সান জে2ইই প্রত্যয়িত উচ্চ-পারফরম্যান্স জেডিবিসি ড্রাইভারগুলির একটি স্যুট সরবরাহ করে। জে. ডি. বি. সি. আর. 4 হল স্কট ক্লেমেন্টের লেখা একটি পরিষেবা প্রোগ্রাম যা আই. বি. এম-এ আর. পি. জি থেকে জে. ডি. বি. সি-তে প্রবেশাধিকারের অনুমতি দেয় অর্থাৎ এইচ. এস. কিউ. এল. ডি. বি হল জে. ডি. বি. সি ড্রাইভার সহ একটি আর. ডি. বি. এম. এস এবং এটি একটি বি. এস. ডি লাইসেন্সের অধীনে উপলব্ধ। স্কিমা ক্রলার একটি ওপেন সোর্স এপিআই যা জেডিবিসিকে কাজে লাগায় এবং সাধারণ পুরানো জাভা অবজেক্ট (পিওজেও) হিসাবে ডাটাবেস মেটাডেটা উপলব্ধ করে। আরও দেখুন জিএনইউ ডেটা অ্যাক্সেস (জিডিএ) জেডিবিসিফেকেড ওপেন ডেটাবেস কানেক্টিভিটি (ওডিবিসি) অবজেক্ট-রিলেশনাল ম্যাপিং (ওআরএম) উদ্ধৃতি উল্লেখ বাহ্যিক লিঙ্কগুলি এপিআই জাভডোক ডকুমেন্টেশন এপিআই জাভডোক ডকুমেন্টেশন ও/আর ব্রোকার স্কালা জেডিবিসি ফ্রেমওয়ার্ক এসকিউএলটুল ওপেন সোর্স, কমান্ড-লাইন, জেনেরিক জেডিবিসি ক্লায়েন্ট ইউটিলিটি। যে কোনও জে. ডি. বি. সি-সমর্থিত ডাটাবেসের সঙ্গে কাজ করে। জেডিবিসি ইউআরএল স্ট্রিং এবং সমস্ত ডাটাবেসের সম্পর্কিত তথ্য। জাভা প্ল্যাটফর্ম জাভা নির্দিষ্টকরণ এসকিউএল ডেটা অ্যাক্সেসের জন্য অনুরোধ করেছে জাভা এপিআই ডাটাবেস এপিআই