Spring Boot Test এবং H2

Database Tutorials - এইচ২ ডাটাবেস (H2 Database) H2 Database এর জন্য ডেটাবেজ টেস্টিং |
242
242

Spring Boot একটি জনপ্রিয় Java ফ্রেমওয়ার্ক, যা দ্রুত এবং সহজে স্ট্যান্ডঅ্যালোন অ্যাপ্লিকেশন তৈরি করতে সহায়ক। Spring Boot অ্যাপ্লিকেশনগুলির জন্য Unit Testing এবং Integration Testing একটি অপরিহার্য অংশ। এই টেস্টিং প্রক্রিয়াগুলির জন্য H2 ডেটাবেজ ব্যবহার করা হয় কারণ এটি একটি In-memory database যা টেস্টিং পরিবেশে দ্রুত কাজ করে এবং কোনো স্থায়ী ডেটা পরিবর্তন না করে।

Spring Boot অ্যাপ্লিকেশনগুলির জন্য H2 ডেটাবেজ ব্যবহার করা অনেক সহজ, এবং এটি প্রকল্পে ডেটাবেজ-সম্পর্কিত টেস্টিং সহজ এবং দ্রুত করে তোলে। H2 ডেটাবেজ সাধারণত Spring Boot Test কনটেক্সটে ব্যবহৃত হয়, যেখানে ডেটাবেজ টেস্টিং করা হয়, কিন্তু প্রকৃত ডেটাবেজে কোনো পরিবর্তন হয় না।


Spring Boot Test এবং H2 সেটআপ

Spring Boot Test কনটেক্সটে H2 ডেটাবেজ ব্যবহার করার জন্য কয়েকটি পদক্ষেপ অনুসরণ করতে হয়:

১. Spring Boot এর জন্য ডিপেন্ডেন্সি যোগ করা

প্রথমেই, Spring Boot প্রকল্পে H2 ডেটাবেজ এবং Spring Data JPA ডিপেন্ডেন্সি যোগ করতে হবে। pom.xml ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যোগ করুন:

<dependencies>
    <!-- Spring Boot Starter Test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- Spring Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- H2 Database -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- Spring Boot Starter Web (for REST APIs, optional) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  • spring-boot-starter-test: Spring Boot Test সমর্থন করতে এই ডিপেন্ডেন্সি ব্যবহার করা হয়।
  • spring-boot-starter-data-jpa: Spring Data JPA ব্যবহার করার জন্য এই ডিপেন্ডেন্সি যোগ করতে হবে।
  • h2: H2 ডেটাবেজ ব্যবহারের জন্য এই ডিপেন্ডেন্সিটি প্রয়োজন।

২. application.properties কনফিগারেশন

Spring Boot অ্যাপ্লিকেশনে H2 ডেটাবেজ ব্যবহার করতে, src/main/resources/application.properties ফাইলে H2 ডেটাবেজ কনফিগারেশন যোগ করতে হবে:

# H2 Database Configuration
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

# Enable H2 Console for testing
spring.h2.console.enabled=true
  • spring.datasource.url: H2 ডেটাবেজ URL সেট করা হয়, যেখানে mem:testdb ইন-মেমরি ডেটাবেজের জন্য ব্যবহৃত হয়।
  • spring.h2.console.enabled=true: H2 কনসোল এনেবল করা হয় যাতে আপনি ডেটাবেজের কন্টেন্ট ব্রাউজ করতে পারেন।

Spring Boot Test কনফিগারেশন

Spring Boot Test কনটেক্সটে H2 ডেটাবেজ ব্যবহার করার জন্য, @DataJpaTest অ্যানোটেশন ব্যবহার করা হয়। এটি শুধু JPA সম্পর্কিত টেস্ট চালায় এবং H2 ডেটাবেজ ইন-মেমরি মোডে ব্যবহার করে।

৩. টেস্ট ক্লাস তৈরি করা

নিম্নলিখিত উদাহরণে, আমরা User নামক একটি Entity টেস্ট করব, যেখানে H2 ডেটাবেজ ব্যবহার করা হবে:

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import static org.assertj.core.api.Assertions.assertThat;

@DataJpaTest
public class UserRepositoryTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void testCreateAndFindUser() {
        // Create and save a new user
        User user = new User("John", "Doe");
        userRepository.save(user);

        // Retrieve user from database
        User foundUser = userRepository.findById(user.getId()).orElse(null);

        // Verify the results
        assertThat(foundUser).isNotNull();
        assertThat(foundUser.getFirstName()).isEqualTo("John");
        assertThat(foundUser.getLastName()).isEqualTo("Doe");
    }
}

এখানে:

  • @DataJpaTest: Spring Data JPA টেস্টিং কনটেক্সট সেট করে এবং H2 ডেটাবেজ ইন-মেমরি মোডে চলে।
  • @Autowired: UserRepository ইনজেক্ট করা হয়, যা ডেটাবেজের CRUD অপারেশন পরিচালনা করবে।
  • userRepository.save(): নতুন ইউজার তৈরি এবং সেভ করা।
  • userRepository.findById(): ইউজার অনুসন্ধান করা।

৪. User Entity এবং UserRepository তৈরি করা

// User Entity
@Entity
public class User {

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

    private String firstName;
    private String lastName;

    // Constructors, getters, setters
    public User() {}
    
    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    // Getters and Setters
}
// UserRepository
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // Custom queries can be added here if needed
}

Spring Boot Test চালানো

H2 ডেটাবেজ এবং @DataJpaTest ব্যবহার করে আপনি Spring Boot অ্যাপ্লিকেশনের জাভা কোডের জন্য টেস্ট চালাতে পারেন। Spring Boot Test কনটেক্সটের মধ্যে H2 ডেটাবেজ স্বয়ংক্রিয়ভাবে ব্যবহৃত হবে, এবং ইন-মেমরি ডেটাবেজে টেস্ট ডেটা সঞ্চিত থাকবে। ডেটাবেজ সম্পর্কিত টেস্ট চলানোর পর, H2 ইন-মেমরি ডেটাবেজটি অটোমেটিক্যালি পরিষ্কার হয়ে যাবে।


Spring Boot Test এবং H2 এর সুবিধা

  • এনভায়রনমেন্টের স্বচ্ছতা: H2 ইন-মেমরি ডেটাবেজ ব্যবহারের কারণে প্রকৃত ডেটাবেজে কোনো পরিবর্তন না ঘটিয়ে ডেটাবেজ সম্পর্কিত কার্যক্রম পরীক্ষা করা যায়।
  • দ্রুত টেস্টিং: ইন-মেমরি ডেটাবেজ ব্যবহারের কারণে টেস্ট দ্রুত চলে।
  • স্বয়ংক্রিয় ডেটাবেজ রিসেট: টেস্ট শেষে ইন-মেমরি ডেটাবেজ পরিষ্কার হয়ে যায়, ফলে ডেটাবেজের অবস্থা রিসেট করা হয়।
  • কনফিগারেশনে সহজতা: H2 ডেটাবেজে কোনো অতিরিক্ত কনফিগারেশন প্রয়োজন নেই এবং এটি দ্রুত অ্যাপ্লিকেশনে একীভূত করা যায়।

উপসংহার

Spring Boot Test এবং H2 ডেটাবেজ ব্যবহারের মাধ্যমে ডেটাবেজ টেস্টিং খুবই সহজ এবং দ্রুত করা যায়। H2 ইন-মেমরি ডেটাবেজ স্বয়ংক্রিয়ভাবে ডেটাবেজ পরিচালনা করতে সাহায্য করে, এবং @DataJpaTest অ্যানোটেশন ব্যবহার করে Spring Boot অ্যাপ্লিকেশনের JPA ফিচারগুলি দ্রুত এবং নির্ভুলভাবে টেস্ট করা সম্ভব। H2 ডেটাবেজের সাথে Spring Boot টেস্টিং টুলসের মাধ্যমে একটি সহজ এবং কার্যকর টেস্টিং পরিবেশ তৈরি করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

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

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

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