DataSource এবং Spring JDBC

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC)
107
107

স্প্রিং জেডিবিসি (Spring JDBC) ডেটাবেসের সাথে সহজ এবং কার্যকরভাবে কাজ করার জন্য একটি শক্তিশালী এবং উচ্চ পর্যায়ের অ্যাবস্ট্রাকশন প্রদান করে। এর একটি গুরুত্বপূর্ণ অংশ হল DataSource, যা ডেটাবেসের সাথে সংযোগ স্থাপন এবং পরিচালনা করার জন্য ব্যবহৃত হয়।

১. DataSource:

DataSource একটি ইন্টারফেস যা ডেটাবেস সংযোগ ব্যবস্থাপনা করে। এটি জাভাতে ডেটাবেস সংযোগ পুল ব্যবস্থাপনার জন্য ব্যবহৃত হয় এবং DriverManagerDataSource, BasicDataSource বা HikariCP ইত্যাদি বিভিন্ন ডেটাবেস কানেকশন পুলের অ্যাপ্লিকেশন কনফিগারেশন ও ম্যানেজমেন্টের জন্য ব্যবহার করা হয়।

DataSource এর গুরুত্ব:

  • কনফিগারেশন সুবিধা: ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য DataSource ব্যবহার করা হয়, যা ডেটাবেস কানেকশন তৈরি ও সংরক্ষণ করতে সহায়তা করে। DataSource সাধারণত একটি কনফিগারেশন ফাইল থেকে কনফিগার হয়।
  • কানেকশন পুলিং: এটি ডেটাবেসের সংযোগ পুল তৈরি করতে সাহায্য করে, যা সংযোগ ব্যবস্থাপনা সহজ করে।
  • পুনঃব্যবহারযোগ্য কানেকশন: সংযোগ পুনরায় ব্যবহারযোগ্য হয়, ফলে কর্মক্ষমতা বৃদ্ধি পায়।

DataSource এর উদাহরণ:

import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;

public class DataSourceConfig {
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }
}

এখানে DriverManagerDataSource ব্যবহার করা হয়েছে, যা একটি সাধারণ DataSource ইমপ্লিমেন্টেশন।

২. Spring JDBC:

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

Spring JDBC এর মূল উপাদানগুলি:

  1. JdbcTemplate: JdbcTemplate স্প্রিং জেডিবিসির প্রধান ক্লাস যা ডেটাবেস অপারেশন যেমন সিলেক্ট, ইনসার্ট, আপডেট এবং ডিলিট পরিচালনা করে। এটি ডেটাবেস এক্সেপশন হ্যান্ডলিংকেও সহজ করে দেয়।
  2. RowMapper: এটি একটি ইন্টারফেস যা ডেটাবেস রেজাল্ট সেট থেকে Java অবজেক্টে ডেটা ম্যাপ করার জন্য ব্যবহৃত হয়।
  3. NamedParameterJdbcTemplate: এটি JdbcTemplate এর একটি সম্প্রসারণ, যা নামযুক্ত প্যারামিটার (named parameters) ব্যবহারের সুবিধা দেয়।

Spring JDBC ব্যবহার করার উদাহরণ:

import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;

public class EmployeeDao {
    private JdbcTemplate jdbcTemplate;

    // DataSource Inject করা হচ্ছে
    public void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    // ডেটাবেসে ইনসার্ট অপারেশন
    public void insertEmployee(Employee employee) {
        String sql = "INSERT INTO employee (id, name, age) VALUES (?, ?, ?)";
        jdbcTemplate.update(sql, employee.getId(), employee.getName(), employee.getAge());
    }

    // ডেটাবেস থেকে ডেটা পড়ার উদাহরণ
    public Employee getEmployeeById(int id) {
        String sql = "SELECT * FROM employee WHERE id = ?";
        return jdbcTemplate.queryForObject(sql, new Object[] {id}, new EmployeeRowMapper());
    }
}

এখানে, JdbcTemplate ব্যবহৃত হয়েছে ডেটাবেসের সাথে সম্পর্কিত অপারেশনগুলির জন্য এবং DataSource এর মাধ্যমে ডেটাবেস কানেকশন পরিচালিত হচ্ছে।

৩. DataSource এবং Spring JDBC এর মধ্যে সম্পর্ক:

DataSource এবং Spring JDBC একে অপরের সাথে সম্পর্কিত। DataSource ডেটাবেস সংযোগ পরিচালনা করে এবং JdbcTemplate এর মাধ্যমে সেই সংযোগ ব্যবহার করে ডেটাবেসের সাথে কার্যকরভাবে যোগাযোগ করা হয়। DataSource এর মাধ্যমে ডেটাবেস কানেকশন পুল করা হয়, যা সংযোগের ব্যবস্থাপনা সহজ করে দেয় এবং স্প্রিং JDBC এর কর্মক্ষমতা উন্নত করে।

উপসংহার:

  • DataSource স্প্রিং JDBC ব্যবহার করার জন্য ডেটাবেস সংযোগ ব্যবস্থাপনা সরবরাহ করে।
  • Spring JDBC ডেটাবেস অপারেশনগুলোকে সহজ করে তোলে, JdbcTemplate এবং অন্যান্য ক্লাসের মাধ্যমে ডেটাবেসের সাথে সংযোগ স্থাপন, কুয়েরি এক্সিকিউশন এবং এক্সেপশন হ্যান্ডলিং সহজ করা হয়।
Content added By

DataSource কি এবং কেন এটি ব্যবহার করা হয়?

77
77

DataSource স্প্রিং জেডিবিসি (Spring JDBC) এর একটি গুরুত্বপূর্ণ উপাদান। এটি ডেটাবেসের সাথে সংযোগ স্থাপন করার জন্য প্রয়োজনীয় কনফিগারেশন প্রদান করে এবং একটি ডেটাবেস কানেকশন পুল (Connection Pool) সরবরাহ করে।

DataSource কি?

DataSource একটি ইন্টারফেস যা ডেটাবেসের সাথে সংযোগ (connection) প্রতিষ্ঠা করার জন্য ব্যবহৃত হয়। এটি একটি কাস্টম ডেটাবেস কনফিগারেশন সরবরাহ করে, যেমন ডেটাবেস URL, ব্যবহারকারীর নাম, পাসওয়ার্ড, ড্রাইভার ক্লাস ইত্যাদি।

এটি JDBC কনফিগারেশন এবং ডেটাবেসের সাথে সংযোগের জন্য অন্যান্য কার্যক্রমের জন্য একটি ইউনিফাইড API সরবরাহ করে।

স্প্রিং ফ্রেমওয়ার্কে, DataSource ব্যবহারের মূল উদ্দেশ্য হলো ডেটাবেসের সাথে কাজ করার সময় সংযোগের পুনঃব্যবহার এবং পরিচালনা সহজ করা।

কেন DataSource ব্যবহার করা হয়?

  1. ডেটাবেস সংযোগের পুনঃব্যবহার: DataSource সংযোগ পুল ব্যবহার করে। অর্থাৎ, একবার ডেটাবেসের সাথে একটি সংযোগ তৈরি হলে, সেটি পরবর্তী প্রয়োজনে পুনরায় ব্যবহার করা যায়। এতে ডেটাবেসে অতিরিক্ত সংযোগ খোলার প্রয়োজন পড়েনা এবং এটি সিস্টেমের পারফরমেন্স বাড়ায়।
  2. কানেকশন পুল (Connection Pool): ডেটাবেসের সাথে যোগাযোগ করার জন্য সংযোগ খুলতে ও বন্ধ করতে অনেক সময় এবং রিসোর্সের প্রয়োজন হয়। কানেকশন পুলের মাধ্যমে একাধিক সংযোগ একত্রে সংরক্ষণ করা হয় এবং ব্যবহারের পর পুনরায় সেই সংযোগগুলো পুনঃব্যবহার করা হয়, যা অ্যাপ্লিকেশনকে আরও দ্রুত এবং দক্ষ করে তোলে।
  3. ডেটাবেস কনফিগারেশন পরিচালনা: DataSource ডেটাবেসের কনফিগারেশন যেমন URL, ড্রাইভার, ব্যবহারকারীর নাম, পাসওয়ার্ড ইত্যাদি এক জায়গায় সংরক্ষণ করতে সাহায্য করে। এর ফলে কনফিগারেশন মানেজমেন্ট সহজ হয়ে যায়।
  4. কোড ক্লিন ও মেইনটেনেবল: DataSource ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য অনেক বেশি কোড লিখতে হয় না। স্প্রিং এই কনফিগারেশন এবং সংযোগ ব্যবস্থাপনা অনেক সহজ করে দিয়েছে।

উদাহরণ:

এখানে একটি সাধারণ DataSource কনফিগারেশনের উদাহরণ দেওয়া হলো:

import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

public class DataSourceConfig {

    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }
}

এখানে, DriverManagerDataSource একটি সাধারণ DataSource ইমপ্লিমেন্টেশন যা ডেটাবেসের URL, ড্রাইভার ক্লাস, ইউজারনেম এবং পাসওয়ার্ড সেট করে।

স্প্রিংে DataSource কিভাবে কাজ করে?

স্প্রিংে DataSource কনফিগারেশন সাধারণত XML বা Java কনফিগারেশনের মাধ্যমে করা হয়। এটি JdbcTemplate বা অন্যান্য জেডিবিসি ক্লাসগুলির সাথে সংযুক্ত হয়ে ডেটাবেস অ্যাক্সেস পরিচালনা করে।

XML কনফিগারেশন উদাহরণ:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
    <property name="username" value="root" />
    <property name="password" value="password" />
</bean>

এখানে, dataSource নামক একটি Bean তৈরি করা হয়েছে, যা JdbcTemplate ক্লাসের জন্য ডেটাবেস কানেকশন প্রদান করবে।

Java কনফিগারেশন উদাহরণ:

@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(dataSource());
    }
}

এই কনফিগারেশনে, dataSource একটি Bean হিসেবে তৈরি করা হয়েছে এবং JdbcTemplate এর সাথে সংযুক্ত করা হয়েছে।

সারাংশ:

  • DataSource ডেটাবেসের সাথে সংযোগ ব্যবস্থাপনা সহজ করে এবং কানেকশন পুলিংয়ের মাধ্যমে পারফরমেন্স উন্নত করে।
  • এটি ডেটাবেস কনফিগারেশন, সংযোগ সৃষ্টি এবং পুনঃব্যবহার সহজতর করে তোলে।
  • স্প্রিং অ্যাপ্লিকেশনগুলিতে DataSource ব্যবহার করে ডেটাবেসের সাথে কার্যকরী এবং দক্ষ সংযোগ স্থাপন করা যায়।
Content added By

Spring Framework এ DataSource কনফিগারেশন

74
74

Spring JDBC-এ DataSource কনফিগারেশন খুবই গুরুত্বপূর্ণ কারণ এটি ডেটাবেসের সাথে সংযোগ স্থাপন করতে ব্যবহৃত হয়। Spring Framework একটি DataSource কনফিগারেশনকে সহজ এবং কার্যকরভাবে পরিচালনা করতে সাহায্য করে। DataSource কনফিগারেশন, ডেটাবেসের সাথে সংযোগ স্থাপন এবং ম্যানেজমেন্টকে সহজ করে তোলে।

Spring JDBC ব্যবহারে DataSource কনফিগারেশন সাধারণত XML কনফিগারেশন ফাইল বা Java কনফিগারেশন ক্লাসে করা যায়। এখানে আমি দুটি কনফিগারেশন পদ্ধতি দেখাবো:

1. XML কনফিগারেশন পদ্ধতি

XML কনফিগারেশন পদ্ধতিতে Spring Bean কনফিগারেশন ফাইল ব্যবহার করা হয়, যেখানে DataSource এবং JdbcTemplate কনফিগার করা হয়।

উদাহরণ:

applicationContext.xml (XML কনফিগারেশন ফাইল)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- DataSource Bean Configuration -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
        <property name="username" value="root"/>
        <property name="password" value="password"/>
    </bean>

    <!-- JdbcTemplate Bean Configuration -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg ref="dataSource"/>
    </bean>

</beans>

এই কনফিগারেশনে:

  • BasicDataSource: এটি Apache Commons DBCP (Database Connection Pool) থেকে একটি DataSource। এটি কনফিগার করা হয় driverClassName, url, username, এবং password প্রপার্টির মাধ্যমে।
  • JdbcTemplate: JdbcTemplate একটি Spring Bean হিসাবে কনফিগার করা হয়েছে এবং এটি dataSource এর রেফারেন্স পায়।

2. Java কনফিগারেশন পদ্ধতি (Java Configuration)

Spring 3 থেকে @Configuration এবং @Bean অ্যানোটেশন ব্যবহার করে Java কনফিগারেশন পদ্ধতিতে Spring Beans কনফিগার করা হয়।

উদাহরণ:

AppConfig.java (Java কনফিগারেশন ক্লাস)

import org.apache.commons.dbcp2.BasicDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;

@Configuration
public class AppConfig {

    // DataSource Bean Configuration
    @Bean
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        return dataSource;
    }

    // JdbcTemplate Bean Configuration
    @Bean
    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(dataSource());
    }
}

এই কনফিগারেশনে:

  • @Bean: এই অ্যানোটেশন ব্যবহার করে dataSource এবং jdbcTemplate Bean কনফিগার করা হয়।
  • dataSource(): এখানে BasicDataSource এর কনফিগারেশন করা হয়, যেমন driverClassName, url, username, এবং password
  • jdbcTemplate(): JdbcTemplate Bean কে dataSource Bean এর সাথে ইনিশিয়ালাইজ করা হয়।

3. Spring JDBC DataSource কনফিগারেশন: সমাপ্তি

  • BasicDataSource: এটি একটি পুলিং DataSource, যা ডেটাবেসের সাথে সংযোগ পরিচালনা করে। এর সাহায্যে অনেকগুলো কনকারেন্ট (একসাথে) কনেকশন তৈরি করা সম্ভব হয়, যা কর্মক্ষমতা বাড়ায়।
  • JdbcTemplate: এটি Spring JDBC এর জন্য একটি সহজ API যা SQL অপারেশন যেমন insert, update, select ইত্যাদি পরিচালনা করতে ব্যবহৃত হয়।

অতিরিক্ত পদ্ধতি:

Spring JDBC কনফিগারেশন ব্যবহারে আরও উন্নত কনফিগারেশনগুলি থাকতে পারে, যেমন:

  • HikariCP (একটি উচ্চ পারফরম্যান্স কনফিগারেশন)
  • C3P0 বা BoneCP (আরও ডেটাবেস পুলিং সমাধান)

Spring JDBC-এ DataSource কনফিগারেশনের মাধ্যমে আপনি ডেটাবেস অপারেশনগুলো খুব সহজে ও দক্ষতার সাথে পরিচালনা করতে পারেন।

Content added By

HikariCP এবং Tomcat Connection Pool এর সাথে Integration

71
71

Spring JDBC-তে HikariCP এবং Tomcat Connection Pool দুইটি প্রধান Connection Pooling লাইব্রেরি যা ডেটাবেস কানেকশনের কার্যকারিতা এবং পারফরম্যান্স বৃদ্ধি করার জন্য ব্যবহৃত হয়। Spring JDBC-তে এই দুটি পুলের মধ্যে একটি ব্যবহার করার জন্য আপনি DataSource কনফিগার করতে পারবেন। নিচে HikariCP এবং Tomcat Connection Pool ব্যবহার করে Spring JDBC ইন্টিগ্রেট করার ধাপ আলোচনা করা হলো।

১. HikariCP Integration

HikariCP একটি হালকা, দ্রুত এবং উন্নত connection pool যা অধিকাংশ Java অ্যাপ্লিকেশন এবং Spring Boot প্রোজেক্টে ব্যবহৃত হয়। Spring JDBC-তে HikariCP ইন্টিগ্রেট করার জন্য প্রথমে HikariCP এর জন্য ডিপেনডেন্সি যুক্ত করতে হবে এবং তারপর Spring DataSource হিসেবে এটি কনফিগার করতে হবে।

১.১ Maven ডিপেনডেন্সি:

pom.xml ফাইলে HikariCP ডিপেনডেন্সি যোগ করতে হবে।

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version> <!-- সর্বশেষ সংস্করণ নিশ্চিত করতে Maven Repository থেকে চেক করুন -->
</dependency>

১.২ Spring DataSource কনফিগারেশন:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
        hikariConfig.setUsername("your_username");
        hikariConfig.setPassword("your_password");
        hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
        hikariConfig.setMaximumPoolSize(10); // পুলের সর্বোচ্চ কানেকশন সংখ্যা
        hikariConfig.setMinimumIdle(5); // ন্যূনতম আইডল কানেকশন

        return new HikariDataSource(hikariConfig);
    }

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

এখানে আমরা HikariConfig ক্লাসটি ব্যবহার করে ডেটাবেস সংযোগের জন্য HikariCP কনফিগার করেছি এবং JdbcTemplate তৈরি করার জন্য ডেটাসোর্স পাস করেছি।

১.৩ Spring Boot কনফিগারেশন:

যদি Spring Boot অ্যাপ্লিকেশন ব্যবহার করেন, তাহলে আপনাকে application.properties বা application.yml ফাইলে কনফিগারেশন যুক্ত করতে হবে:

spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/your_database
spring.datasource.hikari.username=your_username
spring.datasource.hikari.password=your_password
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5

এটি Spring Boot অটোমেটিক্যালি HikariCP ব্যবহার করবে।


২. Tomcat Connection Pool Integration

Tomcat Connection Pool হচ্ছে একটি জনপ্রিয় এবং উচ্চ পারফরম্যান্স ডেটাবেস কানেকশন পুল যা Apache Tomcat দ্বারা সরবরাহিত হয়। Spring JDBC-তে এটি ব্যবহার করতে পারেন এবং এটি Java EE অ্যাপ্লিকেশন সার্ভারে ব্যবহৃত হয়।

২.১ Maven ডিপেনডেন্সি:

pom.xml ফাইলে Tomcat JDBC Connection Pool এর জন্য ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
    <version>9.0.53</version> <!-- সর্বশেষ সংস্করণ নিশ্চিত করতে Maven Repository থেকে চেক করুন -->
</dependency>

২.২ Spring DataSource কনফিগারেশন:

import org.apache.tomcat.jdbc.pool.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
        DataSource dataSource = new DataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
        dataSource.setUsername("your_username");
        dataSource.setPassword("your_password");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setMaxActive(10); // পুলের সর্বোচ্চ কানেকশন সংখ্যা
        dataSource.setMinIdle(5); // ন্যূনতম আইডল কানেকশন

        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

এখানে, DataSource ক্লাসটি ব্যবহার করা হয়েছে যা Tomcat JDBC Connection Pool কনফিগার করে এবং JdbcTemplate তৈরি করা হয়েছে।

২.৩ Spring Boot কনফিগারেশন:

Spring Boot অ্যাপ্লিকেশনের জন্য application.properties বা application.yml ফাইলে Tomcat Connection Pool কনফিগারেশন যুক্ত করতে হবে।

spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.max-active=10
spring.datasource.tomcat.min-idle=5

Spring Boot স্বয়ংক্রিয়ভাবে Tomcat Connection Pool ব্যবহার করবে।


উপসংহার:

  • HikariCP সাধারণত দ্রুত এবং পারফরম্যান্সের জন্য সুপারিশ করা হয়।
  • Tomcat Connection Pool তাও একটি শক্তিশালী এবং প্রমাণিত লাইব্রেরি যা Apache Tomcat সার্ভারের জন্য বিশেষভাবে ডিজাইন করা হয়েছে।
  • Spring JDBC বা Spring Boot অ্যাপ্লিকেশন তৈরির সময় আপনি উপরের কনফিগারেশন ব্যবহার করে HikariCP বা Tomcat Connection Pool নির্বাচন করতে পারেন।

এটি আপনার ব্যবহারের প্রয়োজনীয়তার উপর নির্ভর করবে যে কোন পুল ব্যবহার করবেন, তবে HikariCP সাধারণত আধুনিক অ্যাপ্লিকেশনগুলির জন্য বেশি জনপ্রিয়।

Content added By

উদাহরণ সহ DataSource এর ব্যবহার

74
74

Spring JDBC-তে DataSource হল ডেটাবেস সংযোগ ব্যবস্থাপনার একটি প্রধান উপাদান। এটি ডেটাবেস সংযোগের জন্য প্রয়োজনীয় তথ্য (যেমন URL, ইউজারনেম, পাসওয়ার্ড) সরবরাহ করে। Spring Framework-এ আমরা সাধারণত DriverManagerDataSource বা HikariDataSource ব্যবহার করি, তবে এটি অন্যান্য DataSource ইমপ্লিমেন্টেশনকেও সমর্থন করে।

নীচে উদাহরণসহ Spring JDBC-তে DataSource কনফিগারেশনের এবং ব্যবহারের ধাপগুলো দেখানো হয়েছে:


Maven Dependency:

প্রথমে spring-jdbc এবং ড্রাইভারের নির্ভরশীলতা যোগ করুন।

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.11</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.29</version>
</dependency>

১. DataSource সেটআপ:

DriverManagerDataSource ব্যবহার করে একটি DataSource তৈরি করা যায়।

import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class DataSourceConfig {
    public DriverManagerDataSource getDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
        dataSource.setUsername("your_username");
        dataSource.setPassword("your_password");
        return dataSource;
    }
}

২. JdbcTemplate তৈরি:

JdbcTemplate ব্যবহার করে ডেটাবেস অপারেশন করা হয়।

import org.springframework.jdbc.core.JdbcTemplate;

public class JdbcTemplateExample {
    public static void main(String[] args) {
        // DataSource Config
        DataSourceConfig config = new DataSourceConfig();
        DriverManagerDataSource dataSource = config.getDataSource();

        // JdbcTemplate
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

        // Table Creation Example
        String createTableQuery = "CREATE TABLE IF NOT EXISTS users (" +
                                  "id INT AUTO_INCREMENT PRIMARY KEY, " +
                                  "name VARCHAR(50), " +
                                  "email VARCHAR(50))";
        jdbcTemplate.execute(createTableQuery);

        // Insert Query
        String insertQuery = "INSERT INTO users (name, email) VALUES (?, ?)";
        jdbcTemplate.update(insertQuery, "John Doe", "john@example.com");

        // Select Query
        String selectQuery = "SELECT name FROM users WHERE email = ?";
        String name = jdbcTemplate.queryForObject(selectQuery, new Object[]{"john@example.com"}, String.class);

        System.out.println("User Name: " + name);
    }
}

৩. RowMapper ব্যবহার:

RowMapper ব্যবহার করে ResultSet থেকে জটিল অবজেক্ট তৈরি করা সহজ।

import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;

public class UserRowMapper implements RowMapper<User> {
    @Override
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        User user = new User();
        user.setId(rs.getInt("id"));
        user.setName(rs.getString("name"));
        user.setEmail(rs.getString("email"));
        return user;
    }
}

৪. ব্যবহার উদাহরণ:

import java.util.List;

public class FetchUsersExample {
    public static void main(String[] args) {
        // DataSource Config
        DataSourceConfig config = new DataSourceConfig();
        DriverManagerDataSource dataSource = config.getDataSource();

        // JdbcTemplate
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

        // Fetching All Users
        String selectAllQuery = "SELECT * FROM users";
        List<User> users = jdbcTemplate.query(selectAllQuery, new UserRowMapper());

        for (User user : users) {
            System.out.println("User ID: " + user.getId());
            System.out.println("User Name: " + user.getName());
            System.out.println("User Email: " + user.getEmail());
        }
    }
}

৫. HikariCP DataSource উদাহরণ (উন্নত পারফরম্যান্সের জন্য):

HikariCP একটি উচ্চ-কার্যক্ষমতার DataSource ইমপ্লিমেন্টেশন।

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import javax.sql.DataSource;

public class HikariDataSourceConfig {
    public DataSource getHikariDataSource() {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database");
        config.setUsername("your_username");
        config.setPassword("your_password");
        config.setDriverClassName("com.mysql.cj.jdbc.Driver");
        config.setMaximumPoolSize(10); // Optional: Connection pool size
        return new HikariDataSource(config);
    }
}

Hikari DataSource ব্যবহার করে JdbcTemplate তৈরি করার পদ্ধতি একই।


আউটপুট:

উপরের উদাহরণগুলো ব্যবহার করে আপনি ডেটাবেসে ডেটা যোগ করতে, পড়তে এবং পরিচালনা করতে পারবেন।

সুবিধা:

  1. Simple Configuration: Spring JDBC-র DataSource সেটআপ সহজ।
  2. Boilerplate Code Removed: Connection তৈরি এবং বন্ধ করার দায়িত্ব JdbcTemplate স্বয়ংক্রিয়ভাবে করে।
  3. Integration Support: বড় প্রজেক্টে সহজে ব্যবহারযোগ্য।
Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion