Hibernate এর সাথে EhCache এবং Hazelcast Integration

Hibernate Caching (First Level, Second Level) - স্প্রিং বুট ওআরএম (Spring Boot ORM) - Java Technologies

337

Hibernate-এ ক্যাশিং একটি গুরুত্বপূর্ণ কৌশল যা ডেটাবেজ অ্যাক্সেস কমিয়ে পারফরম্যান্স বৃদ্ধি করে। Hibernate দুটি স্তরের ক্যাশিং প্রদান করে:

  1. প্রথম স্তরের ক্যাশ (First-Level Cache): Hibernate নিজেই এটি পরিচালনা করে, যা ডিফল্টভাবে সক্রিয় থাকে।
  2. দ্বিতীয় স্তরের ক্যাশ (Second-Level Cache): এটি একটি ঐচ্ছিক ক্যাশিং স্তর, যা কাস্টম ক্যাশিং ফ্রেমওয়ার্কের মাধ্যমে পরিচালিত হয়, যেমন EhCache এবং Hazelcast

Hibernate-এ EhCache Integration

EhCache হলো একটি উচ্চ পারফরম্যান্স, ওপেন-সোর্স ক্যাশিং সল্যুশন যা Hibernate-এর দ্বিতীয় স্তরের ক্যাশিং পরিচালনার জন্য ব্যবহার করা হয়।

১. Maven ডিপেনডেন্সি যুক্ত করা

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>5.x.x</version>
</dependency>

২. Hibernate কনফিগারেশন

application.properties ফাইলে EhCache সক্রিয় করার জন্য নিম্নলিখিত কনফিগারেশন যোগ করুন:

spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory
spring.jpa.properties.javax.cache.provider=org.ehcache.jsr107.EhcacheCachingProvider

৩. ehcache.xml ফাইল তৈরি

EhCache এর কনফিগারেশন ফাইল তৈরি করুন:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.ehcache.org/v3"
        xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">
    <cache alias="default">
        <expiry>
            <ttl unit="seconds">600</ttl>
        </expiry>
        <heap unit="entries">1000</heap>
    </cache>
</config>

৪. Entity ক্লাসে ক্যাশিং সক্রিয় করা

Entity ক্লাসে ক্যাশিং এনাবল করতে @Cache অ্যানোটেশন ব্যবহার করুন:

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    private Double price;

    // Getters and Setters
}

Hibernate-এ Hazelcast Integration

Hazelcast হলো একটি ডিস্ট্রিবিউটেড ইন-মেমোরি ডেটা গ্রিড, যা ক্যাশিং এবং ক্লাস্টারিং সমর্থন করে। এটি Hibernate-এর দ্বিতীয় স্তরের ক্যাশিংয়ের জন্য ব্যবহার করা যেতে পারে।

১. Maven ডিপেনডেন্সি যুক্ত করা

<dependency>
    <groupId>com.hazelcast</groupId>
    <artifactId>hazelcast-hibernate5</artifactId>
    <version>2.x.x</version>
</dependency>
<dependency>
    <groupId>com.hazelcast</groupId>
    <artifactId>hazelcast</artifactId>
    <version>5.x.x</version>
</dependency>

২. Hibernate কনফিগারেশন

application.properties ফাইলে Hazelcast সক্রিয় করার জন্য নিম্নলিখিত কনফিগারেশন যোগ করুন:

spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=com.hazelcast.hibernate.HazelcastCacheRegionFactory

৩. Hazelcast Configuration ফাইল

Hazelcast এর জন্য একটি কনফিগারেশন ফাইল তৈরি করুন:

import com.hazelcast.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HazelcastConfig {

    @Bean
    public Config hazelcastConfig() {
        Config config = new Config();
        config.setInstanceName("hazelcast-instance")
              .getMapConfig("default")
              .setTimeToLiveSeconds(600);
        return config;
    }
}

৪. Entity ক্লাসে ক্যাশিং সক্রিয় করা

Entity ক্লাসে ক্যাশিং চালু করতে @Cache ব্যবহার করুন:

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Order {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String productName;
    private Integer quantity;

    // Getters and Setters
}

EhCache এবং Hazelcast এর তুলনা

বৈশিষ্ট্যEhCacheHazelcast
উপস্থিতিএকক নোড বা ডিস্ট্রিবিউটেডডিস্ট্রিবিউটেড (ক্লাস্টার সমর্থন)
পারফরম্যান্সছোট এবং স্থানীয় ক্যাশের জন্য উপযুক্তবড় ও ডিস্ট্রিবিউটেড সিস্টেমে কার্যকর
ক্লাস্টারিং সমর্থনসীমিত বা অতিরিক্ত কনফিগারেশন প্রয়োজনবিল্ট-ইন ক্লাস্টারিং সমর্থন
সহজতাসহজ এবং হালকাকনফিগারেশন একটু জটিল
ব্যবহারক্ষেত্রছোট অ্যাপ্লিকেশনবড় স্কেল ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন

সারসংক্ষেপ

Hibernate-এ EhCache এবং Hazelcast এর ইন্টিগ্রেশন ডেটাবেজ অ্যাক্সেস অপটিমাইজ করে এবং অ্যাপ্লিকেশনের পারফরম্যান্স বৃদ্ধি করে।

  • EhCache সহজ এবং হালকা ক্যাশিং সল্যুশন, যা একক নোডের জন্য উপযুক্ত।
  • Hazelcast একটি শক্তিশালী ডিস্ট্রিবিউটেড ক্যাশিং সিস্টেম, যা বড় স্কেল অ্যাপ্লিকেশনের জন্য আদর্শ।
    ব্যবহারক্ষেত্র অনুযায়ী সঠিক ক্যাশিং সমাধান নির্বাচন করলে অ্যাপ্লিকেশনের কার্যক্ষমতা উল্লেখযোগ্যভাবে বৃদ্ধি পায়।
Content added By
Promotion

Are you sure to start over?

Loading...