I'm currently on learning on using Dao
pattern in my project. I know, one Table is equivalent to one Dao
, am I right? just like StudentDao
, SubjectDao
.
Each Dao
performs CRUD
operations in their associated tables, but my question is, how am I going to create a DAO
for joined tables? lets say I have a query to join student and subject table, then how do I create a DAO
for that?
Should I place it to the StudentDao
? or to SubjectDao
? or there's a good practice in that kind of situation?
ssss. 5. Dao clases are used to reuse the jdbc logic & Dao(Data Access Object) is a design pattern. dao is a simple java class which contains JDBC logic . Data Access Layer has proven good in separate business logic layer and persistent layer.
The Data Access Object (or DAO) pattern: separates a data resource's client interface from its data access mechanisms. adapts a specific data resource's access API to a generic client interface.
The Data Access Object (DAO) pattern is a structural pattern that allows us to isolate the application/business layer from the persistence layer (usually a relational database but could be any other persistence mechanism) using an abstract API.
You can do it, but that doesn't mean you should. In these cases, I like to use a Service ( CustomerService in this case) that has a method call that uses both DAOs. You can define the transaction around the service method, so if one call fails, they both roll back.
DAO - Data Access Object
is Object
that should only communicate with database. So if you want to JOIN
two tables so you must have in your DTO Object
StudentDTO reference on SubjectDTO
.
public class StudentDTO {
private String name;
private String surname;
private String age;
private SubjectDTO subject;
// getters, setters
}
So, SubjectDTO
public class SubjectDTO {
private String name;
private int room;
// getters, setters
}
And DAO
can look like this:
public StudentDAO {
private final String SELECT_QUERY = "SELECT * FROM Student S JOIN Subject Sb ON (S.id = Sb.id)"
public ArrayList<StudentDTO> getData() {
ArrayList<StudentDTO> data = null;
StudentDTO member = null;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = OracleDAOFactory.getConnection();
ps = con.prepareStatement(SELECT_QUERY);
rs = ps.executeQuery();
while (rs.next()) {
member = new StudentDTO();
member.setName(rs.getString(1));
...
data.add(member);
}
return data;
}
catch (SQLException ex) {
// body
}
finally {
if (con != null) {
con.close();
}
}
}
}
I recommend to you check some tutorials.
Regards
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With