我想知道以某些Collection形式返回结果集的正确方法是什么。 或者我应该创建相同类的类实例然后返回它(如何做?) 这样做的常见做法是什么?或者我应该学习Hibernate并实现它?
public class Author {
private String table_name = "authors";
int id;
String full_name;
String location;
int age;
String details;
/** Getter Setter Methods here ....*/
/** Constructor here.... */
/* Returns all Authors */
public ArrayList all() {
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
/* TODO : figure out which collection is suitable .*/
DbHelper dbHelper = new DbHelper();
Connection conn = dbHelper.getConnection();
ResultSet rs = null;
Statement stmt = null;
try {
stmt = conn.createStatement();
String query = "SELECT * FROM authors";
rs = stmt.executeQuery(query);
while (rs.next()) {
HashMap<String, String> hashmap = new HashMap<>();
int id = rs.getInt(1);
hashmap.put("id",rs.getString(1));
hashmap.put("full_name", rs.getString(2));
hashmap.put("location", rs.getString(3));
hashmap.put("age", rs.getString(4));
hashmap.put("details", rs.getString(5));
list.add(id,hashmap);
//hashmap.clear();
}
} catch (SQLException ex) {
Logger.getLogger(Author.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("you are fuckt");
} finally {
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(Author.class.getName()).log(Level.SEVERE, null, ex);
}
}
return list;
}
}
答案 0 :(得分:1)
我会说你应该去休眠。你只需要执行&#34; list()&#34;就可以获得对象列表。方法。
代码供您参考
List<Authors> al = this.sessionFactory.getCurrentSession().createQuery("from Authors").list();
Hibernare也提供许多其他优势。它肯定比JDBC更好。
JDBC替代方案:
最佳实践表明你应该从DAO层返回一个DTO(数据传输对象),因为建议从DB中一次性获取相关数据,这样你就可以最小化数据库命中。请关注:
List<YourDTO> al = new ArrayList<yourDTO>();
YourDTO是:
class YourDTO
{
private int id:
private Authors authors;
// getters and setters
}
在您执行操作时从resultSet读取数据,然后创建Authors的对象,设置字段,将它们添加到带有id的ArrayList。
答案 1 :(得分:0)
有很多好的选择:
首先尝试使用Spring JDBC,如果这不足以将您的时间和精力投入到Hibernate中。