挑衅都能跟得上。其实你应该看看DAO(数据访问对象)模式。
模型类本身只负责将信息从一个逻辑实例转移到另一个逻辑实例,并且应该只包含geter和setter方法。
DAO类是负责存储更新或检索信息形成的一些数据源(数据库)。这里是例子DAO模式:
public class BookDAO {
private PreparedStatement saveStmt;
private PreparedStatement loadStmt;
public DBBookDAO(String url, String user, String pw) {
Connection con = DriverManager.getConnection(url, user, pw);
saveStmt = con.prepareStatement("INSERT INTO books(isbn, title, author) "
+"VALUES (?, ?, ?)");
loadStmt = con.prepareStatement("SELECT isbn, title, author FROM books "
+"WHERE isbn = ?");
}
public Book loadBook(String isbn) {
Book b = new Book();
loadStmt.setString(1, isbn);
ResultSet result = loadStmt.executeQuery();
if (!result.next()) return null;
b.setIsbn(result.getString("isbn"));
b.setTitle(result.getString("title"));
b.setAuthor(result.getString("author"));
return b;
}
public void saveBook(Book b) {
saveStmt.setString(1, b.getIsbn());
saveStmt.setString(2, b.getTitle());
saveStmt.setString(3, b.getAuthor());
saveStmt.executeUpdate();
}
}
这在很大程度上取决于你使用的框架。 – maba 2013-04-28 08:48:51
这里的一些讨论 - http://stackoverflow.com/questions/538870/java-static-methods-best-practices。我个人不会使用静态方法,因为它们通常很难测试。另外,如果您的应用支持多租户(即两个或更多不同的用户组),那么这可能会变得更加困难。 – 2013-04-28 09:05:54
在我看来,MVC模式被用来推广封装的概念,在这个意义上说,没有其他类应该直接访问它的'数据成员'并且有一定的扩展'成员函数'。因此,我猜创建实例方法,应该是第一个选择... :-) – 2013-04-28 09:23:53