CodeGym/Java Course/All lectures for BN purposes/ডাটাবেসে অবজেক্ট সেভ করা

ডাটাবেসে অবজেক্ট সেভ করা

বিদ্যমান

JDBC ডেটা প্রকারের সম্পূর্ণ তালিকা

আপনি যে ডেটা প্রকারগুলি জানেন তা ছাড়াও, JDBC আপনাকে DBMS-এর জন্য অনেকগুলি নেটিভ ডেটা টাইপের সাথে কাজ করার অনুমতি দেয়। নীচে আমি তাদের পেতে প্রকার এবং ফাংশন তালিকাভুক্ত করব:

টাইপ পদ্ধতি
অ্যারে getArray()
AsciiStream getAsciiStream()
বিগডেসিমাল getBigDecimal()
বাইনারি স্ট্রিম getBinaryStream()
ব্লব getBlob()
বুলিয়ান getBoolian()
ব্লব getBlob()
বুলিয়ান getBoolian()
বাইট getByte()
বাইট getBytes()
ক্যারেক্টার স্ট্রিম GetCaracterStream()
ক্লব getClob()
তারিখ getDate()
ডাবল getDouble()
ভাসা getFloat()
int getInt()
দীর্ঘ getLong()
এনচ্যারেক্টার স্ট্রিম getNCharacterstream()
অবজেক্ট getObject()
রেফ getRef()
সারি আইডি getRowId()
সংক্ষিপ্ত getShort()
এসকিউএলএক্সএমএল getSQLXML()
স্ট্রিং getString()
সময় সময় পেতে()
টাইমস্ট্যাম্প getTimestamp()
ইউনিকোড স্ট্রিম getUnicodeStream()
URL getURL()

আমরা ইতিমধ্যে আদিম প্রকার বিবেচনা করেছি। এখন অবজেক্ট নিয়ে কাজ করার চেষ্টা করি।

BLOB ডেটা টাইপ

আপনি যদি ডাটাবেসে কিছু বস্তু সংরক্ষণ করতে চান, তাহলে এটি করার সবচেয়ে সহজ উপায় হল SQL BLOB টাইপ ব্যবহার করা। JDBC এর প্রতিরূপ ব্লব নামে পরিচিত।

BLOB মানে বাইনারি L arge অবজেক্ট _ এটি বাইটের একটি অ্যারে সংরক্ষণ করতে ব্যবহৃত হয়। JDBC-তে ব্লব টাইপ একটি ইন্টারফেস এবং আপনি এতে দুটি উপায়ে ডেটা রাখতে (এবং গ্রহণ করতে পারেন):

  • ইনপুটস্ট্রিম ব্যবহার করে
  • বাইট একটি অ্যারে ব্যবহার করে

উদাহরণ: 3 নম্বর কলামে BLOB প্রকার রয়েছে:

Statement statement = connection.createStatement();
    ResultSet results = statement.executeQuery("SELECT * FROM user");
    results.first();

    Blob blob = results.getBlob(3);
    InputStream is = blob.getBinaryStream();

আপনার নিজের ব্লব অবজেক্ট তৈরি করতে, আপনাকে createBlob() ফাংশনটি ব্যবহার করতে হবে । উদাহরণ:

String insertQuery = “INSERT INTO images(name, image) VALUES (?, ?);
PreparedStatement statement = connection.prepareStatement(insertQuery);

// Create a Blob object and get an OtputStream from it to write data to it
Blob blob = connection.createBlob();

// Populate the Blob with data...
OutputStream os = blob.setBinaryStream(1);

// Passing Blob as query parameter
statement.setBlob(2, blob);
statement.execute();

ডেটা সহ একটি ব্লব তৈরি করার দুটি উপায় রয়েছে। প্রথমটি আউটপুটস্টিমের মাধ্যমে :

Path avatar = Paths.get("E:\\images\\cat.jpg");
OutputStream os = blob.setBinaryStream(1);
Files.copy(avatar, os);

এবং দ্বিতীয়টি - বাইট দিয়ে পূরণ করার মাধ্যমে:

Path avatar = Paths.get("E:\\images\\cat.jpg");
byte[] content = Files.readAllBytes(avatar);
blob.setBytes(1, content);

একটি ডাটাবেসে একটি জাভা অবজেক্ট সংরক্ষণ করা হচ্ছে

আমরা শিখেছি কিভাবে ডাটাবেসে বাইনারি অবজেক্ট সংরক্ষণ করতে হয়: বাইট অ্যারে, বাইট স্ট্রীম ইত্যাদি। জাভা অবজেক্ট সম্পর্কে কি? কিভাবে আমরা একটি ডাটাবেসে একটি জাভা অবজেক্ট সংরক্ষণ করব?

ধরা যাক আমাদের একটি কর্মচারী জাভা ক্লাস রয়েছে যা একটি কোম্পানির একজন কর্মচারীকে বর্ণনা করে:

public class Employee {
    public Integer id;
    public String name;
    public String occupation;
    public Integer salary;
    public Date joinDate;
}

কিভাবে আমরা এই শ্রেণীর একটি বস্তুকে JDBC ব্যবহার করে ডাটাবেসে সংরক্ষণ করতে পারি?

আসলে, আপনি ইতিমধ্যেই আপনার যা জানা দরকার তা জানেন। প্রথমে আপনাকে ডাটাবেসে একটি টেবিল তৈরি করতে হবে যা এই ক্লাসের সাথে সম্পর্কিত। উদাহরণস্বরূপ, এই এক:

CREATE TABLE employee {
    id INT PRIMARY KEY NOT NULL,
    name VARCHAR(100),
    occupation VARCHAR(100),
    salary INT,
    join_date DATE
}

এবং এখন আসুন কোডটি লিখি যা আমাদের কর্মচারী শ্রেণীর একটি বস্তুকে বেসে যুক্ত করবে:

public static boolean addEmployee(Connection connection, Employee employee) throws Exception {
    	// Create and prepare a query to insert data into the table
    	String insertQuery = "INSERT INTO employee(name, occupation, salary, join_date ) VALUES (?, ?, ?, ?)";
    	PreparedStatement statement = connection.prepareStatement(insertQuery);

    	// Populate the query with data from the Employee object
    	statement.setString(1, employee.name);
    	statement.setString(2, employee.occupation);
    	statement.setInt(3, employee.salary);
    	statement.setDate(4, employee.joinDate);

    	// Execute our query and it returns true if a new row has been added
    	int count = statement.executeUpdate();
    	return count > 0;
    }

সহজ এবং পরিষ্কার. পদ্ধতিটি দুর্দান্ত কাজ করবে।

একটি ডাটাবেস থেকে একটি জাভা অবজেক্ট পড়া

আমরা শিখেছি কিভাবে ডাটাবেসে অবজেক্ট লিখতে হয়, এখন ডাটাবেস থেকে অবজেক্ট পড়ার জন্য কোড লিখি। আসুন কোড দিয়ে শুরু করি যা ডাটাবেস থেকে একটি বস্তুকে তার আইডি দ্বারা পাঠ করে:

public static Employee getEployeeById(Connection connection, int id) throws Exception {
    	// Create and prepare a query to get an employee from the table
    	PreparedStatement statement = connection.prepareStatement("SELECT * FROM employee WHERE id = ?");
    	statement.setInt(1, id);

    	// Execute our query and it returns null if there are no rows in the query result
    	ResultSet results = statement.executeQuery();
    	if (!results.first())
        	return null;

    	// Populate the Employee object with the data from the ResultSet
    	Employee employee = new Employee();
    	employee.id = results.getInt(1);
    	employee.name = results.getString(2);
    	employee.occupation = results.getString(3);
    	employee.salary = results.getInt(4);
    	employee.joinDate = results.getDate(5);
    	return employee;
}

এবং যদি আমরা একটি বস্তুর প্রয়োজন না, কিন্তু একাধিক? এমন অনুরোধ লেখাও সহজ। আসুন আমাদের কোম্পানীর সমস্ত কর্মচারী পেতে:

public static List<Employee> getAllEployees(Connection connection) throws Exception {
	// Create and execute a query to get employees from the table
	Statement statement = connection.createStatement();
	ResultSet results = statement.executeQuery("SELECT * FROM employee");

	ArrayList<Employee> list = new ArrayList<Employee>();
	while (results.next()) {
        // Populate the Employee object with the data from the current row of the ResultSet
	        Employee employee = new Employee();
	        employee.id = results.getInt(1);
	        employee.name = results.getString(2);
	        employee.occupation = results.getString(3);
	        employee.salary = results.getInt(4);
	        employee.joinDate = results.getDate(5);

	        list.add(employee);
	}
	return list;
}

যাইহোক, যদি এই জাতীয় অনেকগুলি পদ্ধতি থাকে তবে তাদের প্রতিটিতে আপনাকে ফলাফলসেট স্ট্রিংটিকে একটি অবজেক্টে রূপান্তর করার জন্য একই কোড লিখতে হবেকর্মচারী. তাই এই কোডটি একটি পৃথক পদ্ধতিতে সরানো যেতে পারে।

এটি বিশেষভাবে উপযোগী হতে পারে যদি এমপ্লয়ি ক্লাসে জটিল ক্ষেত্র থাকে যেমন Enum, InputStream, অথবা অন্যান্য বস্তুর রেফারেন্স যা আমরা ডাটাবেসে সংরক্ষণ করতে চাই।

মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই