`
namezhou
  • 浏览: 158615 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate 一对多关系的实现

阅读更多

实体类User

 

public class User {
 private int uid;
 private String username;
 private String password;
 private Set<Order> orders;
}//省略构造和getter setter

 
 
实体类 Order
 

public class Order {
 private int orderid;
 private String name;
 private double balance;
 private User user;
}//省略构造和getter setter

  
映射文件 order.hbm.xml
 

<hibernate-mapping package="tc.day3.onetomany.entity">
 <class name="Order" table="ectsorder">
  <id name="orderid" >
   <generator class="native"></generator> <!--此处不可以不写,我一晚上时间才找出来-->
  </id>
  <property name="name"></property>
  <property name="balance"></property>
  <!-- user是Order类中的属性名order
  cascade是代表关联关系  column 是指外键 -->
  <many-to-one name="user" cascade="all" column="userid"></many-to-one>
 </class>
</hibernate-mapping>

  
 
映射文件 user.hbm.xml
 

<class name="User" table="ectsuser">
 <id name="uid" column="userid">
  <generator class="native"></generator>   
 </id>
 <property name="username"></property>
 <property name="password"></property>
 <!-- set是代表保存orders所在的集合 -->
 <set name="orders" cascade="all">
 <!-- userid代表在order表中的外键名 -->
  <key column="userid"></key>
  <!-- 映射的多方的类名,若不加包名则为全类名 -->
  <one-to-many class="Order"/>
 </set>
 

 
 

</class>
</hibernate-mapping>

  
 测试代码

public class Test {
 public static void main(String[] args) {
  Session session=DBFactory.getSession();
  Transaction ts=session.beginTransaction();
  try{
  Order order1=new Order();
  order1.setName("Java");
  order1.setBalance(99.5);
  Order order2=new Order();
  order2.setName("C++");
  order2.setBalance(78.5);
  Order order3=new Order();
  order3.setName("JDBC");
  order3.setBalance(96.5);
  User user=new User();
  user.setUsername("zhangsan");
  user.setPassword("123456");
  Set<Order> orders=new HashSet<Order>();
  order1.setUser(user);
  order2.setUser(user);
  order3.setUser(user);
  orders.add(order1);
  orders.add(order2);
  orders.add(order3);
  user.setOrders(orders);
  session.save(user);
  ts.commit();
  
  }catch(Exception e){
   e.printStackTrace();
   ts.rollback();
  }finally{
   session.close();
  }
  
 }


}

 

分享到:
评论

相关推荐

    Hibernate一对一,一对多,多对多实例

    例如,Class实体和Student实体的一对多关系: ```java @Entity public class Class { @OneToMany(mappedBy = "class") private List&lt;Student&gt; students; } @Entity public class Student { @ManyToOne ...

    hibernate多对一单向关联关系实现源码

    以上就是关于Hibernate中实现多对一单向关联关系的基本知识,包括如何在实体类中定义关联、如何进行数据库操作以及如何查询关联对象。这个源代码示例应该提供了更具体的实现细节,你可以通过查看和运行它来深入理解...

    hibernate一对多项目

    在JavaEE开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化...通过分析这些代码,你将能更好地掌握Hibernate一对多关系的配置和使用。同时,也可以尝试修改配置或业务逻辑,以加深理解和应用。

    hibernate一对多案例

    以上就是使用Hibernate实现一对多关系映射的基本步骤。通过这种方式,我们可以在Java对象模型和数据库表之间轻松地转换,大大简化了数据操作。需要注意的是,处理一对多关系时要合理配置级联操作和缓存策略,以避免...

    hibernate一对多与多对一

    本篇文章将详细讲解"hibernate一对多与多对一"的关系映射概念,以及如何在实际开发中进行配置和使用。 首先,我们来看一下“一对多”关系。在现实世界中,这种关系可以对应到例如一个班级有多个学生,或者一个人...

    hibernate一对多实例

    描述中的链接指向了一篇由“fangguanhong”在iteye博客上发表的文章,虽然具体内容没有提供,但我们可以根据标题推测该文章可能详细讲解了一个具体的Hibernate一对多关系的实现步骤和示例代码。 在Java的Hibernate...

    hibernate一对多关系

    在这个"hibernate一对多关系"的资源中,我们主要探讨的是Hibernate如何处理一个实体类与多个实体类之间的关联关系。 在数据库设计中,一对多关系是非常常见的一种关系类型,比如一个部门可以有多个员工,一个学生...

    hibernate一对多代码

    本文将详细解析"hibernate一对多映射"的概念、配置及其实现过程,以帮助理解并掌握这一核心特性。 首先,我们要明白在关系型数据库中,"一对多"关系意味着一个实体(比如一个部门)可以有多个相关实体(如部门下的...

    hibernate一对一关联关系

    以上就是关于Hibernate一对一关联关系的详细解释,通过理解和掌握这些知识点,你可以更有效地在Java项目中设计和实现数据库模型,提高代码的可读性和维护性。希望这份资源能帮助你更好地理解和运用Hibernate框架。

    Hibernate ORM - 一对多双向关联关系

    这个压缩包文件“HibernateORM”很可能包含了关于如何在实际项目中设置和使用Hibernate一对多双向关联的示例代码、配置文件或者详细教程。通过学习这些材料,开发者能够深入理解如何在Java应用中利用Hibernate来处理...

    Hibernate的多对一和一对多操作实例

    在数据库层面,实现多对一和一对多关系通常涉及创建表之间的外键约束。但在本例中,作者提到了一种较为简化的设计方式,即不在数据库层面上明确设定外键,而是将逻辑关系的控制交给了Hibernate框架。这种方式虽然...

    Hibernate双向一对多经典实例

    本实例将聚焦于Hibernate中的一对多关系,这是一种常见的关联类型,尤其是在处理具有层次结构的数据时。双向一对多关系意味着一个实体可以拥有多个相关联的实体,同时每个相关联的实体也可以回指到原始实体。 **...

    hibernate 一对多,两个实例项目

    在Hibernate中,一对多关系可以通过在实体类中定义集合属性(如List、Set等)来实现,同时配合使用`@OneToMany`注解。例如,一个学生可以有多个课程,那么"学生"就是"一"端,"课程"就是"多"端。配置时,需要指定`...

    hibernate一对一的关系

    在某些场景下,可能需要将原本的一对一关系转化为一对多或多对一关系,以优化性能。 ### 7. 事务管理 由于一对一关系涉及到两个实体,因此在处理这类关系时,需要注意事务管理,确保数据的完整性和一致性。 综上...

    CH4Hibernate2,一对多,多对一,多对多实现增删改查

    在数据库设计中,一对多关系表示一个实体可以与多个其他实体关联。例如,一个学生可以有多个课程,而一门课程可以被多个学生选修。在Hibernate中,我们通过在Java对象模型中定义List、Set或其他集合类型的属性来表示...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的...通过合理的配置和使用,开发者可以轻松管理实体之间的多对多关系,提高开发效率。理解并熟练掌握这部分知识对于提升Java企业级应用开发能力至关重要。

    hibernate实现多对多关联关系源码

    // 使用@ManyToMany注解表示多对多关系 @ManyToMany(cascade = CascadeType.ALL) @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = ...

    Hibernate annotation JPA 一对多,多对多

    同时,还需要在`Teacher`类中添加一个`List&lt;Student&gt;`字段,用`@OneToMany`注解来实现一对多关系,形成双向关联。 3. **多对多关系**: 学生和班级的关系可以是多对多,因为一个学生可以属于多个班级,反过来,一...

    hibernate一对多,多对一,一对多双向关联

    例如,@OneToOne 可用于表示一对一关系,@ManyToOne 和 @OneToMany 用于多对一和一对多关系。 4. **外键约束:** 在数据库层面,这些关联通常通过外键实现。Hibernate允许在映射文件或注解中指定外键的生成策略。 ...

    hibernate实例(一对多,多对一)

    在这个“hibernate实例(一对多,多对一)”的主题中,我们将深入探讨两种重要的关联关系:一对一(One-to-One)和一对多(One-to-Many)。 **一对一关联(One-to-One)** 在一对一关联中,一个实体与另一个实体之间...

Global site tag (gtag.js) - Google Analytics