Enterprise মধ্যম

একটি রিপোজিটরি ইন্টারফেস ডিক্লেয়ার করুন এবং জাকার্তা ডেটাকে স্বয়ংক্রিয়ভাবে DAO ইমপ্লিমেন্টেশন তৈরি করতে দিন।

✕ Jakarta EE 8+
@PersistenceContext
EntityManager em;

public User findById(Long id) {
    return em.find(User.class, id);
}

public List<User> findByName(String name) {
    return em.createQuery(
        "SELECT u FROM User u WHERE u.name = :name",
        User.class)
        .setParameter("name", name)
        .getResultList();
}

public void save(User user) {
    em.persist(user);
}
✓ Jakarta EE 11+
@Repository
public interface Users extends CrudRepository<User, Long> {
    List<User> findByName(String name);
}
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
🪄

জিরো বয়লারপ্লেট (Zero Boilerplate)

ইন্টারফেস ডিক্লেয়ার করুন; কন্টেইনার ডিপ্লয়ের সময় সম্পূর্ণ DAO ইমপ্লিমেন্টেশন জেনারেট করে।

🔍

ডেরাইভড কোয়েরি (Derived Queries)

FindByNameAndStatus-এর মতো মেথডের নামগুলো স্বয়ংক্রিয়ভাবে পার্স করা হয় – কোনো JPQL বা SQL এর প্রয়োজন নেই।

🔌

পোর্টেবল (Portable)

যেকোনো জাকার্তা EE 11 কমপ্লায়েন্ট রানটাইম কোনো ভেন্ডর লক-ইন ছাড়াই রিপোজিটরি ইমপ্লিমেন্টেশন প্রদান করে।

পুরনো পদ্ধতি
JPA EntityManager
আধুনিক পদ্ধতি
জাকার্তা ডেটা রিপোজিটরি (Jakarta Data Repository)
JDK থেকে
21
কঠিনতা
মধ্যম
JPA বনাম জাকার্তা ডেটা (Jakarta Data)
উপলব্ধ

জাকার্তা EE 11 / Java 21 (2024) থেকে উপলব্ধ

জাকার্তা ডেটা (Jakarta EE 11) ডেটা অ্যাক্সেসকে একটি পিওর ইন্টারফেস ডিক্লারেশনে পরিণত করে। আপনি @Repository অ্যানোটেশন দিয়ে একটি ইন্টারফেস তৈরি করেন এবং CrudRepository-এর মতো বিল্ট-ইন রিপোজিটরি টাইপ এক্সটেন্ড করেন। রানটাইম স্বয়ংক্রিয়ভাবে ইমপ্লিমেন্টেশন জেনারেট করে – FindByName-এর মতো মেথডের নাম থেকে ডেরাইভড কোয়েরি (derived queries) সহ – ফলে কোনো EntityManager বয়লারপ্লেট, JPQL স্ট্রিং বা হাতে লেখা সেভ/ফাইন্ড মেথডের প্রয়োজন হয় না।