Enterprise মধ্যম

JPA-এর অবজেক্ট-রিলেশনাল ম্যাপিং এবং EntityManager ব্যবহার করে ভার্বোস JDBC বয়লারপ্লেট প্রতিস্থাপন করুন।

✕ Java EE
String sql = "SELECT * FROM users WHERE id = ?";
try (Connection con = dataSource.getConnection();
     PreparedStatement ps =
             con.prepareStatement(sql)) {
    ps.setLong(1, id);
    ResultSet rs = ps.executeQuery();
    if (rs.next()) {
        User u = new User();
        u.setId(rs.getLong("id"));
        u.setName(rs.getString("name"));
    }
}
✓ Jakarta EE 8+
@PersistenceContext
EntityManager em;

public User findUser(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();
}
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
🗺️

অবজেক্ট ম্যাপিং

এনটিটিগুলো প্লেইন অ্যানোটেড ক্লাস – ম্যানুয়াল ResultSet-কে অবজেক্টে রূপান্তর করার প্রয়োজন নেই।

🔒

টাইপ-সেফ কোয়েরি (Type-safe Queries)

JPQL Raw টেবিল এবং কলাম স্ট্রিংয়ের পরিবর্তে এনটিটি টাইপ এবং ফিল্ডের উপর কাজ করে।

বিল্ট-ইন ক্যাশিং (Built-in Caching)

ফার্স্ট- এবং সেকেন্ড-লেভেল ক্যাশেগুলো স্বয়ংক্রিয়ভাবে ডেটাবেসের রাউন্ড-ট্রিপ (round-trips) কমিয়ে দেয়।

পুরনো পদ্ধতি
JDBC
আধুনিক পদ্ধতি
JPA EntityManager
JDK থেকে
11
কঠিনতা
মধ্যম
JDBC বনাম JPA
উপলব্ধ

জাকার্তা EE 8 / Java 11 থেকে ব্যাপকভাবে উপলব্ধ৷

JPA (Jakarta Persistence API) জাভা অবজেক্টকে ডেটাবেস রো-এর (database rows) সাথে ম্যাপ করে, যা ম্যানুয়াল ResultSet প্রসেসিং এবং SQL স্ট্রিং কনক্যাটেনেশনকে দূর করে। EntityManager find(), persist(), এবং JPQL কোয়েরি প্রদান করে, যাতে আপনি Raw SQL-এর পরিবর্তে ডোমেইন অবজেক্ট (domain objects) নিয়ে কাজ করতে পারেন, যখন কন্টেইনার কানেকশন পুলিং এবং ট্রানজাকশন ম্যানেজ করে।