Teacher.java
package com.wansha.pojo; import java.util.HashSet; import java.util.Set; public class Teacher{ private int id; private String name; private Set<Student> set = new HashSet<Student>(); public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<Student> getSet() { return set; } public void setSet(Set<Student> set) { this.set = set; } } Student.java
package com.wansha.pojo; public class Student{ private int team_id; private String name; public int getTeam_id() { return team_id; } public void setTeam_id(int teamId) { team_id = teamId; } public String getName() { return name; } public void setName(String name) { this.name = name; } } Teacher.hbm.xml (不需要建立Student.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> <class name="com.wansha.pojo.Teacher" table="teacher"> <id name="id" column="id" type="int"> <generator class="identity"></generator> </id> <property name="name" column="name" type="string" /> <set name="set" table="student" cascade="all"> <key column="teacher_id"/> <composite-element class="com.wansha.pojo.Student"> <property name="name" column="name" type="string"></property> </composite-element> </set> </class> </hibernate-mapping> Test.java
package com.wansha.util; import java.util.Iterator; import java.util.Set; import org.hibernate.Session; import org.hibernate.Transaction; import com.wansha.pojo.Student; import com.wansha.pojo.Teacher; public class Test { public static void main(String[] args) { /* Teacher teacher = new Teacher(); teacher.setName("teacher zhang"); Student student1 = new Student(); student1.setName("sharp"); Student student2 = new Student(); student2.setName("hailie"); teacher.getSet().add(student1); teacher.getSet().add(student2); Session session = HibernateUtil.getSession(); Transaction ts = null; try{ ts = session.beginTransaction(); session.save(teacher); ts.commit(); }catch(Exception ex){ if(ts != null)ts.rollback(); ex.printStackTrace(); }finally{ HibernateUtil.close(session); } */ Session session = HibernateUtil.getSession(); Transaction ts = null; try{ ts = session.beginTransaction(); Teacher teacher = (Teacher)session.get(Teacher.class, 1); Set<Student> set = teacher.getSet(); System.out.println(set.iterator().next().getName()); // for(Iterator<Student> iter = set.iterator();iter.hasNext();){ // System.out.println(iter.next().getName()); // } // ts.commit(); //此句多出两句delete和insert语句 }catch(Exception ex){ if(ts != null)ts.rollback(); ex.printStackTrace(); }finally{ HibernateUtil.close(session); } } }
您还没有登录,请您登录后再发表评论
在Java企业级开发中,Spring和Hibernate是两个非常重要的框架,Spring主要用于依赖注入和管理对象,而Hibernate则是一个优秀的持久层框架,它简化了数据库操作。本教程将深入探讨Spring和Hibernate结合使用时的一对...
对多关系在 Hibernate 中,多对多关系通常涉及到一个中间表来存储两个实体之间的关联。以下是如何配置 Hibernate 的多对多映射关系。 1. 数据库建表 假设我们有两张表,`users` 和 `roles`,它们通过 `user_roles` ...
3. **外键**:外键是数据库中的一个字段,它的值是另一张表的主键,用于建立两个表之间的关联。在Hibernate中,外键常用来实现对象间的关联。 4. **单向关联**:在Hibernate的一对多关联中,如果只有“多”的一方...
在Java企业级开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中...
- **映射文件**:每个实体类都需要有一个对应的映射文件(`.hbm.xml`),用于定义实体类与数据库表之间的映射关系。 #### 六、映射策略详解 - **一对一映射**:可以采用外键或主键的方式实现两个表之间的一对一...
- 分级表继承:使用一个主表和多个扩展表。 #### 十、集合映射 - **类型**: - `Set`:无序不重复集合。 - `List`:有序可重复集合。 - `Map`:键值对集合。 - **排序**:通过 `<order-by>` 元素实现排序。 -...
- **xxx.hbm.xml**: 映射文件,每个需要持久化的类都有一个对应的映射文件,用于定义对象与数据库表之间的映射关系。 - **Hibernate API**: 提供了与数据库交互的各种API,包括Session、SessionFactory等。 - **JDBC...
- 通常需要创建一个中间表来维护多对多关系。 - 映射文件中使用`<set>`或`<bag>`元素,并指定`inverse`和`cascade`属性。 #### 组件映射与集合映射 组件映射允许将复杂的数据类型如地址等映射到数据库中,而集合...
这种关联通常需要一个关联表(中间表)来存储两个实体的组合。 **Hibernate继承策略** 在 Hibernate 中,为了处理对象模型中的继承关系,提供了以下几种继承策略: 1. **单表继承(Single Table Inheritance)**...
- **多对多**:通常需要一个关联表来维护双方的关系。 - **继承关系映射** Hibernate支持三种继承策略: - **一个类一个表**:每种子类都拥有自己的表。 - **一个实体类一个表**:所有子类共享一张表,使用一...
例如,在`Author.hbm.xml`中,我们创建了一个名为`books`的`set`集合,指定其逆向关系(`inverse="true"`),表名(`table="BOOKAUTHOR"`),并设置级联操作(`cascade="all"`)。这里,`many-to-many`元素指定了与`...
是一个很大的缓存,本身维护了一个可配置的二级缓存 4.用来构建Session对象 Configuration 1.启动和配置Hibernate 2.读取hibernate的配置文件和映射文件 3.构建SessionFactory对象 Transaction 1.事务管理对象...
相关推荐
在Java企业级开发中,Spring和Hibernate是两个非常重要的框架,Spring主要用于依赖注入和管理对象,而Hibernate则是一个优秀的持久层框架,它简化了数据库操作。本教程将深入探讨Spring和Hibernate结合使用时的一对...
对多关系在 Hibernate 中,多对多关系通常涉及到一个中间表来存储两个实体之间的关联。以下是如何配置 Hibernate 的多对多映射关系。 1. 数据库建表 假设我们有两张表,`users` 和 `roles`,它们通过 `user_roles` ...
3. **外键**:外键是数据库中的一个字段,它的值是另一张表的主键,用于建立两个表之间的关联。在Hibernate中,外键常用来实现对象间的关联。 4. **单向关联**:在Hibernate的一对多关联中,如果只有“多”的一方...
在Java企业级开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中...
- **映射文件**:每个实体类都需要有一个对应的映射文件(`.hbm.xml`),用于定义实体类与数据库表之间的映射关系。 #### 六、映射策略详解 - **一对一映射**:可以采用外键或主键的方式实现两个表之间的一对一...
- 分级表继承:使用一个主表和多个扩展表。 #### 十、集合映射 - **类型**: - `Set`:无序不重复集合。 - `List`:有序可重复集合。 - `Map`:键值对集合。 - **排序**:通过 `<order-by>` 元素实现排序。 -...
- **xxx.hbm.xml**: 映射文件,每个需要持久化的类都有一个对应的映射文件,用于定义对象与数据库表之间的映射关系。 - **Hibernate API**: 提供了与数据库交互的各种API,包括Session、SessionFactory等。 - **JDBC...
- 通常需要创建一个中间表来维护多对多关系。 - 映射文件中使用`<set>`或`<bag>`元素,并指定`inverse`和`cascade`属性。 #### 组件映射与集合映射 组件映射允许将复杂的数据类型如地址等映射到数据库中,而集合...
这种关联通常需要一个关联表(中间表)来存储两个实体的组合。 **Hibernate继承策略** 在 Hibernate 中,为了处理对象模型中的继承关系,提供了以下几种继承策略: 1. **单表继承(Single Table Inheritance)**...
- **多对多**:通常需要一个关联表来维护双方的关系。 - **继承关系映射** Hibernate支持三种继承策略: - **一个类一个表**:每种子类都拥有自己的表。 - **一个实体类一个表**:所有子类共享一张表,使用一...
例如,在`Author.hbm.xml`中,我们创建了一个名为`books`的`set`集合,指定其逆向关系(`inverse="true"`),表名(`table="BOOKAUTHOR"`),并设置级联操作(`cascade="all"`)。这里,`many-to-many`元素指定了与`...
是一个很大的缓存,本身维护了一个可配置的二级缓存 4.用来构建Session对象 Configuration 1.启动和配置Hibernate 2.读取hibernate的配置文件和映射文件 3.构建SessionFactory对象 Transaction 1.事务管理对象...