在JSF中使用CRUD的正确方法

时间:2014-02-06 09:25:42

标签: java jsf

我在JSF项目中需要有关CRUD操作的一些设计原则的建议。

一个非常简单的例子:

我有一个基本屏幕,其中包含一个提交的表单。在我的bean中,我在我的方法中声明了一个数据库连接,并在我的脚本中填充了一个字符串对象。我修改字符串以获取表单中提交的数据。这就是我被教导的方式,但我怀疑它不是基于坚实的原则。

所以我决定开始使用预备语句。看起来好一点,但在我看来仍然不完美。

我的问题是:不是为每个CRUD方法编写一个新脚本,而是创建存储过程更好,在我看来,它看起来更简洁,可能具有更好的可读性。

还是有完全不同的做事方式?我唯一担心的是一个非常脆弱的OLTP数据库。

2 个答案:

答案 0 :(得分:2)

您的JSF应始终重定向到调用服务方法的servlet,您可以在其中编写所有业务逻辑并调用数据访问对象来执行所需的SQL查询。 U永远不应该使用您的bean进行数据库连接...您应该使用DataSource进行数据库连接。是的,一个简单的preparedStatement就足够了。你应该只转换你的servlet中的所有字符串,然后在你的bean的帮助下将它传递给下一层,你的所有表单字段都有你的setter和getter。你的DAo包含所有的CRUD操作。

答案 1 :(得分:2)

我不喜欢使用存储过程的想法,因为它们很难移植,通常也难以调试。

我已经用这样的事情工作多年了

  1. JSF - > xhtml + @ViewScoped托管bean来容纳值
  2. 用于从托管bean调用的事务方法的无状态EJB
  3. 从EJB调用的实体DAO,将基本CRUD方法与泛型一起重用。我认为这里的JPA很棒,特别是当他们使用元模型类型安全标准时(http://docs.oracle.com/javaee/6/tutorial/doc/gjivm.html
  4. 如今,使用轻量级JavaEE堆栈(如apache TomEE)比使用预准备语句更容易。