Java के लिए ORM: Hibernate, MyBatis और JPA की तुलना उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Java के लिए ORM: तुलना और उदाहरण



ORM (Object-Relational Mapping) एक ऐसी तकनीक है जो Java के ऑब्जेक्ट-ओरिएंटेड मॉडल को रिलेशनल डेटाबेस से जोड़ती है। यह डेवलपर को टेम्पलेट SQL कोड लिखने से बचाती है और डेटा को सामान्य Java ऑब्जेक्ट की तरह काम करने की अनुमति देती है। Java में तीन दृष्टिकोण सबसे लोकप्रिय हैं: Hibernate (पूर्ण ORM), MyBatis (SQL mapper) और JPA (Java मानक)। इस लेख में हम व्यावहारिक उदाहरणों के साथ इनकी तुलना करेंगे।



1. JPA (Java Persistence API)

JPA एक विनिर्देश (मानक) है, कोई विशिष्ट कार्यान्वयन नहीं। सबसे लोकप्रिय कार्यान्वयन Hibernate है, लेकिन अन्य भी हैं (EclipseLink, OpenJPA)। JPA एंटिटी मैपिंग के लिए एनोटेशन प्रदान करता है और JPQL (Java Persistence Query Language) का समर्थन करता है।



JPA एंटिटी का उदाहरण:

import javax.persistence.*;

@Entity@Table(name = "users")public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;

@Column(name = "username", nullable = false, length = 50) private String username;

@Column(name = "email") private String email;

// गेटर और सेटर public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}


EntityManager के माध्यम से सहेजने का उदाहरण:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence-unit");EntityManager em = emf.createEntityManager();

em.getTransaction().begin();User user = new User();user.setUsername("ivan");user.setEmail("ivan@example.com");em.persist(user);em.getTransaction().commit();

em.close();emf.close();


2. Hibernate

Hibernate Java के लिए सबसे परिपक्व और कार्यात्मक ORM है। यह JPA को पूरी तरह से लागू करता है, लेकिन इसके अपने विस्तार भी हैं। Hibernate स्वचालित रूप से SQL उत्पन्न करता है, कैशिंग प्रबंधित करता है, lazy loading और कैस्केड संचालन का समर्थन करता है।



Hibernate के साथ मैपिंग का उदाहरण (JPA एनोटेशन का उपयोग करके):

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

@Entity@Table(name = "orders")@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)public class Order { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "order_seq") @SequenceGenerator(name = "order_seq", sequenceName = "order_sequence", allocationSize = 1) private Long id;

@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user;

@Column(name = "total_amount") private Double totalAmount;

// गेटर और सेटर}


Hibernate Criteria API के माध्यम से क्वेरी का उदाहरण:

Session session = sessionFactory.openSession();CriteriaBuilder builder = session.getCriteriaBuilder();CriteriaQuery<User> query = builder.createQuery(User.class);Root<User> root = query.from(User.class);query.select(root).where(builder.equal(root.get("username"), "ivan"));

List<User> users = session.createQuery(query).getResultList();session.close();


3. MyBatis

MyBatis एक पूर्ण ORM नहीं है, बल्कि एक SQL Mapper है। यह स्वचालित रूप से SQL उत्पन्न नहीं करता, बल्कि Java ऑब्जेक्ट पर परिणाम मैप करने के साथ अपने स्वयं के SQL क्वेरी लिखने के लिए एक लचीला तंत्र प्रदान करता है। MyBatis तब आदर्श है जब SQL और प्रदर्शन पर पूर्ण नियंत्रण की आवश्यकता होती है।



XML में मैपिंग का उदाहरण (UserMapper.xml):

<mapper namespace="com.example.mapper.UserMapper">    <select id="selectUser" resultType="User">\                    

अनुशंसाएँ