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是设置其值。
阅读全文
1 0
- SSH(一)——创建持久化实体类
- SSH——Hibernate实体关联映射总结(一)
- EJB笔记四 ——持久化实体管理器
- hibernate持久化实现——实体对象生命周期
- 创建持久化类
- 持久化API(JPA)系列(一)实体简介
- 【SSH】——Hibernate(1)持久化对象转换
- EntityManager和持久化实体
- Hibernate创建持久化类
- EJB 3.0持久化规范之实体类的要求
- EJB 3.0持久化规范之实体类的要求
- 九:实体类与json之间【非持久化字段】
- Hibernate实战_笔记17(持久化实体类)
- 注解:Hibernate通过实体类数据持久化
- SSH(一)——使用Maven创建Web项目
- 商品展示——实体类和适配器的创建
- EJB3 持久化实体管理器EntityManager
- EJB---->持久化实体管理器EntityManager
- nginx http2 源码分析
- Unity 变换物体位置的几种方法
- Codevs 2455 繁忙的都市
- Linux服务器下查看tomcat服务是否启动,重启等基本操作
- R语言学习——向量
- SSH(一)——创建持久化实体类
- Laravel调试利器 — Laravel Debugbar
- Post请求和Spring MVC
- SEO软文标题怎么写吸引人?2018标题写作套路大全
- 敏捷开发杀死了项目经理?
- Zookeeper入门-Java版本HelloWorld例子
- phpStudy配置虚拟域名
- unity自带寻路Navmesh入门教程(一)
- 9.2 构造器与垃圾收集器