EJB命名查询首选项

时间:2014-05-24 14:35:31

标签: java mysql jsp ejb

我有一个具有这种结构的数据库。

enter image description here

我正在使用来自数据库+会话Bean的JSP + Servlet +实体类来实现实体类。正如您所看到的,我的表格已经标准化,反过来又需要连接表格来获取患者/员工的全部详细信息。当我研究https://netbeans.org/kb/docs/javaee/ecommerce/intro.html时,我看到他们通过使用facade.find等访问数据库等。考虑到我的情况,我也尝试过使用相同的东西。

例如。我有一个会话bean(配置文件管理器),它访问实体并将其放入地图中。

public Map getPatientDetails(int patientID)
{
    Map patientMap = new HashMap();

    Patient patient = patientFacade.find(patientID);

    User user = userFacade.find(patient.getUserId().getId());
    UserContact userContact = user.getUserContact();
    Family family = familyFacade.find(patient.getFamilyId().getId()); 
    String patientDOB = new SimpleDateFormat("MMMMM dd, yyyy").format(user.getDateOfBirth());

    patientMap.put("familyRecord", family);
    patientMap.put("patientRecord", patient);
    patientMap.put("patientDOB", patientDOB);
    patientMap.put("userRecord", user);
    patientMap.put("userContactRecord", userContact);

    return patientMap;
}

当我给自己时间考虑时,我认为我可以通过使用和设置命名查询来加入实体,而不是将其作为单一访问。这是正确的方法吗?您是否认为使用Facade访问我的数据库比构建内部联接查询以获得一次获取所有信息更好?你们会建议什么?谢谢!

1 个答案:

答案 0 :(得分:1)

我建议你避免在SQL中加入,因为根据我的经验,这是与数据访问层相关的性能问题的主要根本原因之一。

我建议逐个获取实体(如hibernate)。在这种方法中,将往返数据库。但SQL会很简单,因此更快。