我有一个具有这种结构的数据库。
我正在使用来自数据库+会话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访问我的数据库比构建内部联接查询以获得一次获取所有信息更好?你们会建议什么?谢谢!
答案 0 :(得分:1)
我建议你避免在SQL中加入,因为根据我的经验,这是与数据访问层相关的性能问题的主要根本原因之一。
我建议逐个获取实体(如hibernate)。在这种方法中,将往返数据库。但SQL会很简单,因此更快。