• 开发规范实体和值对象


    写实体类的时候

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

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

    例如:

    @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); }
  • 相关阅读:
    ubuntu 通过命令将数据复制到u盘
    项目感言--功能的模块化
    java 中变量的存储与引用
    java 基础拾漏
    自动完成--autoComplete插件(2)
    自动完成--autoComplete插件
    Linux查看端口
    Linux查看系统信息
    js splice方法
    slice、substring、substr
  • 原文地址:https://www.cnblogs.com/yunqing/p/9330566.html
Copyright © 2020-2023  润新知