SSH(一)——创建持久化实体类

来源:互联网 发布:python中的sleep 编辑:程序博客网 时间:2024/06/05 21:17

1.
持久化对象之间的关联关系以成员变量的方式表现出来,当然,这些成员变量需要setter和getter方法的支持,持久化类之间的关联关系通常对应数据库里的主,外键约束。除此之外,持久化对象还有自己的普通型的成员变量,这些成员变量通常对应数据库字段。Hibernate对于持久化对象没有太多额外要求,只要求持久化对象提供无参数的构造器,如果需要将这些对象放入HashSet集合中,还应该根据实际需要重写的hashCode()和equals()两个方法。其中SSH框架所需要的jar包在这,点击这里
下面是Employee.java持久化类的源代码:

    package org.coolerwu.mydo.domain;    import java.io.Serializable;    import javax.persistence.Column;    import javax.persistence.DiscriminatorColumn;    import javax.persistence.DiscriminatorType;    import javax.persistence.DiscriminatorValue;    import javax.persistence.Entity;    import javax.persistence.GeneratedValue;    import javax.persistence.GenerationType;    import javax.persistence.Id;    import javax.persistence.JoinColumn;    import javax.persistence.ManyToOne;    import javax.persistence.Table;    import org.hibernate.annotations.Cache;    import org.hibernate.annotations.CacheConcurrencyStrategy;    @Entity    @Table(name="employee")    @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)    @DiscriminatorColumn(name="emp_type", discriminatorType=DiscriminatorType.INTEGER)    @DiscriminatorValue("1")    public class Employee implements Serializable{        /**         *          */        private static final long serialVersionUID = 1L;        @Id @Column(name="emp_id")        @GeneratedValue(strategy=GenerationType.IDENTITY)        private Integer id;        @Column(name="name", nullable=false)        private String name;        @Column(name="user", nullable=false, unique=true, length=10)        private String user;        @Column(name="password", nullable=false)        private String password;        @Column(name="salary", nullable=false)        private double salary;        @ManyToOne(targetEntity=Manager.class)        @JoinColumn(name="mgr_id")        private Manager manager;        public Employee() {            super();        }        public Employee(Integer id, String name, String user, String password,                double salary, Manager manager) {            super();            this.id = id;            this.name = name;            this.user = user;            this.password = password;            this.salary = salary;            this.manager = manager;        }        public Integer getId() {            return id;        }        public void setId(Integer id) {            this.id = id;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public String getUser() {            return user;        }        public void setUser(String user) {            this.user = user;        }        public String getPassword() {            return password;        }        public void setPassword(String password) {            this.password = password;        }        public double getSalary() {            return salary;        }        public void setSalary(double salary) {            this.salary = salary;        }        public Manager getManager() {            return manager;        }        public void setManager(Manager manager) {            this.manager = manager;        }    }

下面是Manager.java持久化类的源代码:

    package org.coolerwu.mydo.domain;    import java.io.Serializable;    import java.util.HashSet;    import java.util.Set;    import javax.persistence.Column;    import javax.persistence.DiscriminatorValue;    import javax.persistence.Entity;    import javax.persistence.OneToMany;    import javax.persistence.Table;    import org.hibernate.annotations.Cache;    import org.hibernate.annotations.CacheConcurrencyStrategy;    @Entity    @Table(name="manager")    @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)    @DiscriminatorValue("2")    public class Manager extends Employee implements Serializable{        /**         *          */        private static final long serialVersionUID = 1L;        @Column(name="dept_name")        private String department;        @OneToMany(targetEntity=Employee.class, mappedBy="manager")        private Set<Employee> employees = new HashSet<Employee>();        public Manager() {            super();        }        public Manager(String department, Set<Employee> employees) {            super();            this.department = department;            this.employees = employees;        }        public String getDepartment() {            return department;        }        public void setDepartment(String department) {            this.department = department;        }        public Set<Employee> getEmployees() {            return employees;        }        public void setEmployees(Set<Employee> employees) {            this.employees = employees;        }    }

对所有的1-N的关联关系,建议不要使用“1”的一端控制关系,因此建议为@OneToMany注解增加mappedBy属性,让“N”的一端来控制关联关系。例如Manager.java中的mappedBy=”manager”就是让manager放弃控制关系。其中@DiscriminatorColumn只能标注在顶层的类,它的discriminatorType是设置类型,@DiscriminatorValue是设置其值。

原创粉丝点击