Model: JavaBeans, POJOs, and Data Access Layer (DAO)
JavaBeans, POJOs, and Data Access Layer (DAO)
What is JavaBeans?
Java में जब हम reusable software components बनाना चाहते हैं, तो हम JavaBeans का use करते हैं। यह basically एक special type की class होती है जो data को encapsulate करती है और getter-setter methods के जरिए access provide करती है।
JavaBeans को simple language में समझें तो यह एक ऐसा class model है जो data को store करता है और उसे access करने के लिए public methods देता है। ये beans पूरे project में बार-बार use किए जा सकते हैं।
Features of JavaBeans
- Serializable: JavaBeans को easily serialize किया जा सकता है ताकि data को files या network के through transfer किया जा सके।
- Private Properties: सभी fields private होती हैं, जिससे data encapsulation maintain रहता है।
- Getter और Setter Methods: data को get या set करने के लिए methods का use किया जाता है।
- No-arg Constructor: JavaBean में एक default constructor होना चाहिए ताकि इसे आसानी से instantiate किया जा सके।
Example of JavaBean
public class StudentBean implements java.io.Serializable {
private int id;
private String name;
private String course;
public StudentBean() {}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
}
ऊपर दिए गए example में हमने एक simple JavaBean बनाया है जो student के details को store करता है। यह bean JSP या Servlet में आसानी से use किया जा सकता है।
What are POJOs (Plain Old Java Objects)?
POJO का मतलब होता है “Plain Old Java Object” यानी एक simple Java class जिसमें कोई special interface या inheritance नहीं होती। यह सिर्फ data hold करने के लिए बनाया जाता है।
JavaBeans और POJO दोनों देखने में similar लगते हैं, लेकिन दोनों में कुछ फर्क भी है। POJO में कोई restrictions नहीं होती जैसे serialization या getter-setter का rule।
Features of POJO
- यह pure Java class होती है, किसी predefined framework या library पर dependent नहीं होती।
- इसमें private fields और public getters-setters हो सकते हैं, लेकिन यह जरूरी नहीं है।
- इसका main purpose simple data representation होता है।
Example of POJO
public class Employee {
int empId;
String empName;
double salary;
}
ऊपर के example में कोई getter-setter या constructor नहीं है, फिर भी यह valid POJO है क्योंकि यह सिर्फ data को represent कर रहा है।
Difference between JavaBean and POJO
| Aspect | JavaBean | POJO |
|---|---|---|
| Serialization | Serializable interface implement करना जरूरी | Serialization optional है |
| Encapsulation | Private fields और getter-setter जरूरी | Encapsulation optional है |
| Framework Support | JSP, EJB, Spring में ज्यादा use होते हैं | Hibernate या Spring में lightweight entities के रूप में use होते हैं |
| Constructor | No-arg constructor होना जरूरी | कोई restriction नहीं |
What is DAO (Data Access Object)?
अब बात करते हैं DAO (Data Access Object) की। यह एक design pattern है जो database logic को business logic से अलग करता है। DAO layer का main काम होता है database के साथ interaction manage करना — जैसे insert, update, delete, fetch operations।
DAO pattern application को modular, maintainable और clean बनाता है। इससे developer को direct SQL code business logic में लिखने की जरूरत नहीं पड़ती।
Features of DAO
- Database connection management को simplify करता है।
- Application layers के बीच loose coupling maintain करता है।
- Code reuse और maintainability बढ़ाता है।
- Data access logic को business logic से पूरी तरह अलग करता है।
DAO Architecture Overview
DAO architecture के तीन main components होते हैं:
- Data Transfer Object (DTO): यह class data को represent करती है। (जैसे JavaBean)
- DAO Interface: इसमें methods define होती हैं जो data access से related होती हैं।
- DAO Implementation: यह class actual JDBC code या ORM logic contain करती है।
Example of DAO Pattern
// 1. DTO Class (JavaBean)
public class Student {
private int id;
private String name;
private String course;
// Constructor, getters, setters
}
// 2. DAO Interface
public interface StudentDAO {
public void addStudent(Student s);
public Student getStudent(int id);
public List getAllStudents();
public void deleteStudent(int id);
}
// 3. DAO Implementation
public class StudentDAOImpl implements StudentDAO {
private Connection conn;
public StudentDAOImpl(Connection conn) {
this.conn = conn;
}
public void addStudent(Student s) {
try {
PreparedStatement ps = conn.prepareStatement("insert into student values(?,?,?)");
ps.setInt(1, s.getId());
ps.setString(2, s.getName());
ps.setString(3, s.getCourse());
ps.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
}
}
}
Advantages of DAO Pattern
- Loose Coupling: Database logic को business logic से अलग रखता है।
- Easy Maintenance: अगर database change होता है, तो सिर्फ DAO layer में changes करने पड़ते हैं।
- Testability: Unit testing आसान हो जाती है क्योंकि DAO को mock किया जा सकता है।
- Code Reusability: एक ही DAO multiple modules में reuse किया जा सकता है।
Relation Between JavaBeans, POJOs, and DAO
इन तीनों का आपस में बहुत strong relation है। JavaBeans और POJOs दोनों data को represent करते हैं, जबकि DAO उस data के database operations को manage करता है।
एक simple structure इस तरह होता है:
- POJO / JavaBean: Data को hold करता है।
- DAO: Data को database में store या retrieve करता है।
- Business Layer: DAO को call करके data process करता है।
Flow Diagram
Student Data → JavaBean (Student.java) → DAO Interface (StudentDAO.java) → DAO Implementation (StudentDAOImpl.java) → Database
यह structure MVC architecture या layered applications में commonly use किया जाता है, जैसे JSP + Servlet + JDBC projects में।
Benefits of Using JavaBeans, POJOs, and DAO
- Code Clarity: हर layer का अपना defined purpose होता है।
- Scalability: बड़े projects में code easily extend किया जा सकता है।
- Security: Data encapsulation से unauthorized access रोकता है।
- Performance: DAO pattern optimized data operations provide करता है।
- Framework Compatibility: Hibernate, Spring, JSP सभी इन models को support करते हैं।
Exam Important Points (Quick Notes)
- JavaBean एक reusable component होता है जो private fields और public getters-setters रखता है।
- POJO एक simple class होती है जिसमें कोई restrictions नहीं होती।
- DAO pattern data access logic को business logic से अलग करता है।
- DAO architecture में तीन layers होती हैं — DTO, DAO Interface, और DAO Implementation।
- इन models का use layered architecture में होता है जैसे MVC।
- DAO code reuse और database abstraction provide करता है।
- JavaBeans को JSP pages में use करके data dynamically bind किया जा सकता है।
- POJO lightweight और framework-independent class होती है।
- DAO pattern loosely coupled system बनाता है।