工具eclipse sqlserver2000
1.建立web工程bank
在src下建立包third third.test
在包third下建Employee.java Project.java 以及映射文件Employee.hbm.xml
Project.hbm.xml
在包third.test包下写测试类Demo.java
在工程下引入hibernate所要用的jar包,以及sqlserver驱动的jar包
2.Employee.java
package third; import java.util.HashSet; import java.util.Set; public class Employee { private int employee_id; private String employee_name; private String employee_descr; private Set projs=new HashSet(); public Employee() { super(); } public int getEmployee_id() { return employee_id; } public void setEmployee_id(int employee_id) { this.employee_id = employee_id; } public String getEmployee_name() { return employee_name; } public void setEmployee_name(String employee_name) { this.employee_name = employee_name; } public String getEmployee_descr() { return employee_descr; } public void setEmployee_descr(String employee_descr) { this.employee_descr = employee_descr; } public Set getProjs() { return projs; } public void setProjs(Set projs) { this.projs = projs; } }
Employee.hbm.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="third"> <class name="Employee" table="tbl_emp"> <id name="employee_id" > <generator class="assigned" /> </id> <property name="employee_name" > </property> <property name="employee_descr" > </property> <!-- 本类属性projs,与表 tbl_proj多对多关系,需要经过中间过渡表r_emp_proj--> <set name="projs" table="r_emp_proj" inverse="true"> <key column="r_emp_id"/> <many-to-many class="Project" column="r_proj_id"/> </set> </class> </hibernate-mapping>
3.Project.java
package third; import java.util.HashSet; import java.util.Set; public class Project { private int project_id; private String project_name; private String project_descr; private Set emps=new HashSet(); public Project() { super(); } public Set getEmps() { return emps; } public void setEmps(Set emps) { this.emps = emps; } public int getProject_id() { return project_id; } public void setProject_id(int project_id) { this.project_id = project_id; } public String getProject_name() { return project_name; } public void setProject_name(String project_name) { this.project_name = project_name; } public String getProject_descr() { return project_descr; } public void setProject_descr(String project_descr) { this.project_descr = project_descr; } }
Project.hbm.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="third"> <class name="Project" table="tbl_proj"> <id name="project_id" > <generator class="native" /> </id> <property name="project_name" > </property> <property name="project_descr" > </property> <!-- 本类属性emps与对象Employee是多对多关系,需要经过中间过渡表r_emp_proj --> <!-- --> <set name="emps" table="r_emp_proj"> <key column="r_proj_id" /> <many-to-many class="Employee" column="r_emp_id"/> </set> </class> </hibernate-mapping>
4.Demo.java
package third.test; import java.util.HashSet; import java.util.Set; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import third.Employee; import third.Project; public class Demo { @Test public void tt(){ Configuration cfg=new Configuration(); cfg.configure(); SessionFactory se=cfg.buildSessionFactory(); Session s=se.openSession(); Transaction tr=s.beginTransaction(); try{ Project p=new Project(); Employee em=new Employee(); p.setProject_name("智慧供水平台"); p.setProject_descr("集成所有供水业务"); Set pros=new HashSet(); pros.add(p); em.setEmployee_id(02); em.setEmployee_name("飞鸟"); em.setEmployee_descr("开发"); Set ems=new HashSet(); ems.add(em); p.setEmps(ems); em.setProjs(pros); s.save(p); s.save(em); tr.commit(); }catch(Exception e){ if(tr!=null){ tr.rollback(); } } finally{ s.close(); } } }
相关推荐
本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...
本篇将详细讲解JPA中的一个关键概念——多对多双向关联,并通过实体定义与注解设置来深入理解这一特性。"13_传智播客JPA详解"系列教程涵盖了JPA的诸多方面,而"13_传智播客JPA详解_JPA中的多对多双向关联实体定义与...
在适配器中,我们需要对这些实体类进行处理,通常是通过泛型或者接口来实现。 使用泛型,你可以定义一个通用的适配器,如下: ```kotlin class MultiTypeAdapter(...): RecyclerView.Adapter() { // ... } ``` ...
在Java Persistence API (JPA) 中,多对多(ManyToMany)关系是表示两个实体之间复杂关联的一种方式。这种关联允许一个实体实例可以与多个其他实体实例相关联,反之亦然。例如,一个学生可以选修多门课程,一门课程...
接下来是实体类集合,它是多个实体类对象的集合,通常被用作数据访问层与业务逻辑层之间的数据传输对象。在C#中,可以使用List、ArrayList或其他集合类型来实现。 自动排序的关键在于实现接口,这里提到了四个接口...
这个"4400多个实体类型清单"为我们揭示了SAP系统中庞大的数据模型和业务对象的概貌。实体类型是SAP中的核心概念,它们代表了系统中的具体业务实体,如客户、供应商、物料、订单等。理解这些实体类型对于深入掌握SAP...
在这个“hibernate学习入门之一对多实体映射源码”教程中,我们将深入探讨如何在Hibernate中设置和管理一对多的关系。 一、Hibernate简介 Hibernate是Java开发人员用于处理数据库操作的强大工具,通过它,我们可以...
"基于多任务深度学习的实体和事件联合抽取模型" 本文旨在探讨基于多任务深度学习的实体和事件联合抽取模型,以提升...同时,本文也对命名实体识别与事件检测的相关性进行了分析,并阐述了多任务学习的最新研究进展。
对于嵌套实体类,我们可以通过定义一对多或一对一的关系来处理。 1. **定义实体类**:在开始之前,确保已经正确地引入了GreenDao库。创建两个实体类,例如`User`和`Address`。`User`类可能包含用户的基本信息,如...
4. **序列标注**:模型根据学习到的特征对每个词汇进行标注,确定其是否为实体及具体的实体类型。 5. **后处理**:对识别出的实体进行合并、修正,以提高整体的准确性和完整性。 ChineseNERMSRA的特点在于其深度...
因此,这个数据集的创建者可能采用了诸如词性标注、上下文信息、规则匹配等方法对实体进行标记。 数据集的结构通常包括文本内容和对应的标注信息。在这个案例中,"自然语言处理数据集-5 万多条中文命名实体识别标注...
如@Entity表示该类为数据库表的实体,@Table定义表名,@Id标识主键,@GeneratedValue指定主键生成策略,@Column定义字段与列的对应,@OneToMany、@ManyToOne、@OneToOne和@ManyToMany则用于处理多对一、一对多、一对...
Hibernate支持一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)四种关系映射。例如,一个用户可以有多个订单,订单也可以属于多个用户,这种关系就需要用到@OneToMany和@...
- 定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系。 - 示例:一门...
此外,一些生成器还提供了高级功能,例如支持多态、继承、映射关系(如一对一、一对多、多对多)等复杂数据结构,以及自定义模板以满足特定需求。 在实际开发中,合理利用实体类自动生成器可以显著提升开发效率,...
#### 三、地理实体数据的多尺度表达与基本实体内容 **7. 地理实体数据的多尺度表达** 为了适应不同比例尺下的地理信息展示需求,地理实体数据需要具备多尺度表达能力。这意味着同一个地理实体在不同比例尺下可能有...
Fast Entity Linker 用于训练模型,以将实体链接到文档和查询中的知识库(维基百科),是一款无监督、准确、可扩展多语言实体名称识别和链接系统,同时包含英语、西班牙语和中文数据包。在算法上,使用了实体嵌入,...