【发布时间】:2017-02-14 07:46:24
【问题描述】:
我正在使用 spring 和 hibernate 开发 Web 应用程序。我在两个表employee 和PersonelDetails 之间使用一对一的映射。
以下是我的 bean 类
========================员工======================= ===============
@Entity
@Table(name="employee")
public class Employee {
@Id
@Column
@GeneratedValue
private int empid;
@Column
private String firstName;
@Column
private String lastName;
@Column
private String email;
@Column
private String password;
@Column
private boolean isAdmin;
@Column
private boolean isActive;
@Column
private boolean isLocked;
//getter setters
====================个人资料class====================
@Entity
@Table(name="PersonalDetails")
public class PersonalDetails {
@Column
@Id
private int empid;
@Column
private String personalEmail;
@Column
private String mob;
@Column
private String permenantAdress;
@Column
private String currentAddress;
@Column
private String gender;
@Column
private String maritialStatus;
@MapsId
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "empid", referencedColumnName = "empid")
@ForeignKey(name="empid")
private Employee employee;
//getter setters
在我的应用程序表中,员工由管理员用户填写,同时创建新员工之后,该员工本人通过登录到他的帐户填写personalDetails表由管理员创建)
现在,当我首先尝试将个人详细信息 bean 发送到休眠层时,我必须从员工表中获取员工 bean,然后在 personalDetails 类上调用 setEmployee 方法并将员工 bean 保存在个人详细信息中,然后发送到休眠层以保存在数据库中。
因此,从数据库中获取员工 bean 并再次通过个人详细信息 bean 发回会导致性能问题。
在将数据保存在子表(PersonalDetails)中时,任何人都可以在这里帮助澄清一下是否真的必须传递父对象(Employee)?
========================存储个人详情的代码===============
@RequestMapping(value="addpersonal")
public ModelAndView addPersonalDetails(@ModelAttribute("personalDetails") PersonalDetails personalDetails) {
//personalDetails.setEmpid(1);
personalDetails.setCurrentAddress("niljyoti");
personalDetails.setMob("9405715872");
personalDetails.setPermenantAdress("address");
Employee e = empService.getEmployeebyUserName(uname);
personalDetails.setEmployee(e);
personalDetailsService.addPersonalDetails(personalDetails);
return new ModelAndView("home");
}
【问题讨论】:
-
哪个代码导致了哪个性能问题?发布代码而不是描述它。
标签: spring hibernate spring-mvc