电视台视频网站建设方案,wordpress jquery版本,迪庆网站建设,在线电子书网站怎么做介绍#xff1a; 在本教程中#xff0c;我们将学习使用Hibernate ManyToMany注释定义和使用多对多实体关联。 上下文构建#xff1a; 为了继续学习本教程#xff0c;我们假设我们有两个实体- 雇员和资格#xff1a; 众所周知#xff0c;一名雇员可以拥有多个资格。 此外… 介绍 在本教程中我们将学习使用Hibernate ManyToMany注释定义和使用多对多实体关联。 上下文构建 为了继续学习本教程我们假设我们有两个实体- 雇员和资格 众所周知一名雇员可以拥有多个资格。 此外可以有N名具有特定资格的员工。 显然这意味着“ 雇员”和“ 资格”实体共享多对多关系 。 Maven依赖项 在我们的POM中首先确保我们具有必需的依赖项 dependencies...dependencygroupIdorg.hibernate/groupIdartifactIdhibernate-core/artifactIdversion5.4.0.Final/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.13/version/dependency...
/dependencies 我们始终可以在Maven Central中找到最新的可用版本。 另外本教程使用MySQL数据库。 数据库设置 为了表示ManyToMany关联我们至少需要三个数据库表。 因此假设我们有下面的ERD图表示我们的数据库 另外让我们创建表 CREATE TABLE employee (emp_id INT(15) NOT NULL AUTO_INCREMENT,first_name VARCHAR(20) DEFAULT NULL,last_name VARCHAR(20) DEFAULT NULL,PRIMARY KEY (emp_id)
);CREATE TABLE qualification (qualification_id INT(15) NOT NULL AUTO_INCREMENT,title VARCHAR(20) DEFAULT NULL,PRIMARY KEY (qualification_id)
);CREATE TABLE employee_qualification (emp_id INT(15) NOT NULL,qualification_id INT(15) NOT NULL,PRIMARY KEY (emp_id, qualification_id),CONSTRAINT employee_qualification_empIdFk FOREIGN KEY (emp_id) REFERENCES employee(emp_id),CONSTRAINT employee_qualification_qualIdFk FOREIGN KEY (qualification_id) REFERENCES qualification (qualification_id)
);创建实体 现在我们已经准备好数据库设置让我们首先创建模型类– Employee Entity
Table(name Employee)
public class Employee { // ...ManyToMany(cascade { CascadeType.ALL })JoinTable(name Employee_Qualification, joinColumns { JoinColumn(name emp_id) }, inverseJoinColumns { JoinColumn(name qualification_id) })SetQualification qualifications new HashSet();...
} 多对多关联具有两个方面-拥有方和反向/引用方 。 在关系的所有者端指定了到数据库的实际物理映射 。 在这里 Employee是拥有的实体因此我们使用JoinTable批注定义了实际的物理数据库映射。 JoinTable批注定义了employee_qualification连接表 。 JoinColumn批注指定将用于联接表的列。 我们还提到了qualification_id是反向联接列。 它仅表示它是指关系的相反方面即我们的资格等级。 现在让我们定义我们的资格实体类 Entity
Table(name Qualification)
public class Qualification { // ... ManyToMany(mappedBy qualifications)private SetEmployee employees new HashSet();...
} 由于Qualification类是关联的引用侧或相反侧因此我们已使用mappingBy属性引用其所属侧 Employee 。 同样我们可以看到我们在两个实体中都使用了ManyToMany注释。 使用多对多关联 在我们的main方法中我们可以测试上述映射 //In our MainApp class
public static void main(String[] args) {Session session null; try {SessionFactory factory new Configuration().configure().buildSessionFactory();session factory.openSession();Transaction tranx session.beginTransaction();Employee james new Employee(1001, James, Allen);Employee selena new Employee(1002, Selena, Gomez);SetEmployee employees new HashSet();employees.add(james);employees.add(selena);Qualification masters new Qualification(8787, Masters Degree);masters.setEmployees(employees); session.save(masters);tranx.commit();} catch(Exception e) {e.printStackTrace();}finally {if(session ! null)session.close();}} 在执行上述代码后我们的测试数据将被插入到employee qualification和employee_qualification表中。 结论 在此迷你教程中我们研究了如何建立ManyToMany JPA关联。 我们已经在普通的XML配置上使用了JPA批注因为它们使用起来更加方便并且越来越流行。 翻译自: https://www.javacodegeeks.com/2019/04/hibernate-many-many-tutorial.html