所以我正在编写一个简单的应用程序,而不是偶然发现它我想知道是否有人可以提供有关如何设置它的建议。
我有一个wicket应用程序,我基本上会做类似论坛应用程序(我一直在查看wicket留言簿示例),但是我想将这些消息保存到数据库中。我想使用listview(或者可能是转发器)来显示消息。我创建了db(mysql)和表,并为它们创建了实体对象。
将wicket与db连接的最佳实践是什么?我想我需要一个可加载的可拆卸模型,但我愿意接受建议。
我应该创建一个实现loadabledetachable接口的类,并将该事务交给该类中的数据库吗?我应该做DAO吗?并通过调用DAO中的方法加载模型中的数据?我一直在看例子,我对如何做到这一点很困惑。我已经在学习wicket和整个JPA的东西,所以我真的不想在这上面抛出像Spring这样的东西。我需要能够添加/更新/删除,我只是想弄清楚哪里是最好的地方。
感谢任何帮助或指导。
答案 0 :(得分:1)
我建议您使用最简单的模型,例如Model
或PropertyModel
。渲染页面时,将数据从数据库加载到模型中并显示数据。当用户按下更新按钮时,从模型中读取新值,然后更新到数据库。
您现在不需要任何LoadableDetachableModel
,因为您仍然在学习wicket框架的基本部分。
关于DAO部分,如果你只想专注于学习wicket,创建一个没有DAO类的简单CRUD应用程序是可以的。无论如何,您始终可以将这些代码重构为DAO类。但是,如果您正在尝试开发Web应用程序,那么您应该创建一个DAO类并了解Multiple Tier Architecture的概念。
答案 1 :(得分:0)
德语有一个很好的解释 - 但代码是英文的:
该解决方案通过存储类名并在load()上执行查找来扩展LoadableDetachableModel以保存EntityFacade。
我想这里的例子: http://hotchpotch-blog.de/2012/10/09/wrapping-eines-ejb-in-ein-loadabledetachablemodel/
可以扩展到这样的东西(不是生产就绪):
public class EjbModel extends LoadableDetachableModel {
/**
* Get the name of the EJBInterface type suitable for lookup.
*
*/
protected String ejbName;
public EjbModel(EJBInterface bean){
//store the bean so it will get detached
super(bean)
ejbName = bean.getSimpleName() + "Facade"; //not sure if + "Facade" is needed
}
@Override
protected EJBInterface load() {
EJBInterface result = null;
try {
InitialContext ctx = new InitialContext();
result = (EJBInterface ) ctx.lookup("java:module/" + ejbName);
} catch (NamingException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Error at JNDI lookup for " + getEjbName(), ex);
}
return result;
}
}