开发规范实体和值对象

写实体类的时候

默认多对一的一方要写,特殊情况才不写

默认一对多的一方不用写,特殊才写

例如:

@Entity
@Table(name="t_device")
@Access(AccessType.FIELD)
public class Device extends BaseEntity {/**
     * 设备编号。
     */
    @Column(name="f_device_no")
    private String deviceNo;
/**
     * 设备生产日期。
     */
    @Temporal(TemporalType.DATE)
    @Column(name="f_production_date")
    private Date productionDate;

    /**
     * 设备注册日期。
     */
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="f_register_time")
    private Date registerTime;
/**
     * 设备状态编号。
     */
    @Column(name = "f_device_status_id")
    private Long deviceStatusId;

    /**
     * 设备状态。//多对一的关系,默认写,特殊需求可不写
   *LAZY加载的情况,例如查询设备,需要查询的类型也就几种情况,最多多执行几条sql,所以一般设为即时加载,不设lazy加载
*/ @ManyToOne(optional = false, fetch = FetchType.EAGER) @JoinColumn(name = "f_device_status_id", updatable = false, insertable = false) private DictDeviceStatus deviceStatus; /** * 设备类型编号。//这种写法有助于只需要查询设备类型id或者名字的,跟下面的几行一起对应数据库中的外键字段 */ @Column(name = "f_device_type_id") private Long deviceTypeId; /** * 设备类型。//也是同上,即时加载 */ @ManyToOne(optional = false, fetch = FetchType.EAGER) @JoinColumn(name = "f_device_type_id", updatable = false, insertable = false) private DictDeviceType deviceType; /** * 设备告警信息。//一对多关系,默认情况不写,特殊需求可写 */ //@OneToMany(mappedBy="device") //private List<DeviceAlarm> deviceAlarms; /** * 调度方案。//默认不写 */ //@OneToMany(mappedBy="device") // private List<ScheduleScheme> scheduleSchemes; /** * 升级记录。//默认不写 */ //@OneToMany(mappedBy="device") //private List<UpgradeRecord> upgradeRecords;

 想要获取例如设备类型名字,需要在值对象中写一个get方法,如下

    /**
     * <b>获取设备状态编号。</b>
     * <p><b>详细说明:</b></p>
     * <!-- 在此添加详细说明 -->
     * 无。
     * @return
     */
    public Long getDeviceStatusId() {
        return device.getDeviceStatusId();
    }

    /**
     * <b>设置设备状态编号。</b>
     * <p><b>详细说明:</b></p>
     * <!-- 在此添加详细说明 -->
     * 无。
     * @param deviceStatusId
     */
    public void setDeviceStatusId(Long deviceStatusId) {
        device.setDeviceStatusId(deviceStatusId);
    }
    
    /**
     * <b>获取设备状态名。</b>
     * <p><b>详细说明:</b></p>
     * <!-- 在此添加详细说明 -->
     * 无。
     * @return
     */
    public String getDeviceStatusName() {//想要获取设备的状态,需要在实体类中设置为即时加载,不能设置lazy加载,如果设置为lazy加载的话,
                          //会导致device.getDeviceStatus()查不到,报错no session,lazy加载不会加载设备类型表。 DictDeviceStatus deviceStatus
= device.getDeviceStatus(); return deviceStatus==null?null:deviceStatus.getName(); } /** * <b>获取设备类型编号。</b> * <p><b>详细说明:</b></p> * <!-- 在此添加详细说明 --> * 无。 * @return */ public Long getDeviceTypeId() { return device.getDeviceTypeId(); } /** * <b>获取设备类型名。</b> * <p><b>详细说明:</b></p> * <!-- 在此添加详细说明 --> * 无。 * @return */ public String getDeviceTypeName() { DictDeviceType deviceType = device.getDeviceType(); return deviceType==null?null:deviceType.getName(); } /** * <b>设置设备类型编号。</b> * <p><b>详细说明:</b></p> * <!-- 在此添加详细说明 --> * 无。 * @param deviceTypeId */ public void setDeviceTypeId(Long deviceTypeId) { device.setDeviceTypeId(deviceTypeId); }
原文地址:https://www.cnblogs.com/yunqing/p/9330566.html