我正在尝试使用 JPA 开发一个简单的基于 JSP 的 Web 应用程序,并且想知道开发应用程序的正确用法。
在我的示例应用程序中,我有两个 JSP 页面和一个简单的 Java 类来执行数据库操作。这两个 JSP 文件都使用这个 Java 类来执行 DB 操作。
我已经用以下方式注释了这个类@Stateless
并注入了一个实体管理器:
@PersistenceContext(unitName = "myjpa")
EntityManager em;
在我的persistence.xml
我设置了以下属性:
<property
name="hibernate.transaction.jta.platform"
value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"
/>
我正在使用 JNDI 调用 JSP 中的类(因为该类是为无状态会话 bean 注释的),如下所示:
InitialContext ic = new InitialContext();
Sample sample = (Sample) ic.lookup("java:app/" + application.getContextPath() + "/Sample");
我面临以下情况:
当我尝试使用事务
em.getTransaction().begin()/commit()
进行插入和更新时,它说不能在 JTA 案例中使用事务。因此,在我的 Java 类的构造函数代码中,我使用以下代码:
Properties properties = new Properties();
properties.put("javax.persistence.transactionType", "RESOURCE_LOCAL");
emf = Persistence.createEntityManagerFactory("myjpa",properties);
em = emf.createEntityManager();
我尝试使用诸如em.getTransaction().begin()/commit()
. 但在这种情况下,页面在 2-3 次数据库更新和加载操作后变得非常慢。虽然我没有得到任何例外。总的来说,在我的表中,我的记录少于 25 条。
对我来说,它似乎在内部等待某些操作完成。
同时,我也觉得我使用 JPA 的方式是错误的,因此征求建议,以寻求正确的方法来使用 JSP 和 JPA 做简单的 Web 应用程序。
虽然我仍在探索 Java EE,但如果您对此类案例有任何具体的参考资料,我也愿意阅读并查看它们。