有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

hibernate如何处理用Java编写的网站的数据库,尤其是Wicket?

我不熟悉使用Java开发网站,但我已经开始使用Wicket并创建一个小网站。我想扩展我已经做的(一个带有表单、标签和链接的网站),并实现数据库连接

我看了几个例子,比如Mystic Paste,我看到他们使用了Hibernate和Spring。我以前从未接触过Hibernate或Spring,老实说,注释的大量使用让我有点害怕,因为我以前没有真正使用过它们,除了禁止警告和重写

此时,我有一个连接对象,我在初始化时在WebApplication类中设置了它。然后,每当需要执行查询时,我都会检索这个连接对象。我不知道这对于生产web应用程序来说是不是一种糟糕的方法

非常感谢您的帮助


共 (3) 个答案

  1. # 1 楼答案

    错误的方法,因为连接对象旨在由单个线程使用,而web应用程序请求是从线程池处理的

    在最好的情况下,由于连接对象不能同时执行查询,您会遇到严重的性能问题

    这个问题的解决方案是使用连接池

  2. # 2 楼答案

    Wicket、Spring和Hibernate几乎是Wicket应用程序的标准堆栈。或者说,任何web框架,Spring和Hibernate几乎都是任何web框架的标准堆栈

    关于Wicket,在组件内部使用@SpringBean注入对象是一个非常好的特性。此外,OpenSessionInViewFilter为您管理Hibernate会话(而Hibernate本身负责连接)

    因此,我真的建议您研究Spring和Hibernate——它们都不需要注释,但在大多数情况下,它们比配置文件(通常是XML)更易于使用

    如果你仍然不想使用Spring或Hibernate,我建议你看看OpenSessionInViewFilter,自己创建类似的东西:为每个请求创建一个连接,在一个请求中使用它,最后关闭它。由于这不会很好地执行,您可能更愿意选择从一个池中获取连接,并在请求结束时将其返回到该池。但是,您可能已经在向组件中注入bean,而不是编写此代码;)

  3. # 3 楼答案

    如果你有时间,你可以在Apache Cayenne周围挖掘,它比Hibernate轻得多,而且依赖注入与Google Guice结合使用,同样非常轻量级。Wicket有Wicket guice子项目,它在Wicket组件中提供DI,很像Spring上下文。 我认为这是一个公平的选择,目前为止效果很好