实体类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();
}
}
}
分享到:
相关推荐
例如,Class实体和Student实体的一对多关系: ```java @Entity public class Class { @OneToMany(mappedBy = "class") private List<Student> students; } @Entity public class Student { @ManyToOne ...
以上就是关于Hibernate中实现多对一单向关联关系的基本知识,包括如何在实体类中定义关联、如何进行数据库操作以及如何查询关联对象。这个源代码示例应该提供了更具体的实现细节,你可以通过查看和运行它来深入理解...
在JavaEE开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化...通过分析这些代码,你将能更好地掌握Hibernate一对多关系的配置和使用。同时,也可以尝试修改配置或业务逻辑,以加深理解和应用。
以上就是使用Hibernate实现一对多关系映射的基本步骤。通过这种方式,我们可以在Java对象模型和数据库表之间轻松地转换,大大简化了数据操作。需要注意的是,处理一对多关系时要合理配置级联操作和缓存策略,以避免...
本篇文章将详细讲解"hibernate一对多与多对一"的关系映射概念,以及如何在实际开发中进行配置和使用。 首先,我们来看一下“一对多”关系。在现实世界中,这种关系可以对应到例如一个班级有多个学生,或者一个人...
描述中的链接指向了一篇由“fangguanhong”在iteye博客上发表的文章,虽然具体内容没有提供,但我们可以根据标题推测该文章可能详细讲解了一个具体的Hibernate一对多关系的实现步骤和示例代码。 在Java的Hibernate...
在这个"hibernate一对多关系"的资源中,我们主要探讨的是Hibernate如何处理一个实体类与多个实体类之间的关联关系。 在数据库设计中,一对多关系是非常常见的一种关系类型,比如一个部门可以有多个员工,一个学生...
本文将详细解析"hibernate一对多映射"的概念、配置及其实现过程,以帮助理解并掌握这一核心特性。 首先,我们要明白在关系型数据库中,"一对多"关系意味着一个实体(比如一个部门)可以有多个相关实体(如部门下的...
以上就是关于Hibernate一对一关联关系的详细解释,通过理解和掌握这些知识点,你可以更有效地在Java项目中设计和实现数据库模型,提高代码的可读性和维护性。希望这份资源能帮助你更好地理解和运用Hibernate框架。
这个压缩包文件“HibernateORM”很可能包含了关于如何在实际项目中设置和使用Hibernate一对多双向关联的示例代码、配置文件或者详细教程。通过学习这些材料,开发者能够深入理解如何在Java应用中利用Hibernate来处理...
在数据库层面,实现多对一和一对多关系通常涉及创建表之间的外键约束。但在本例中,作者提到了一种较为简化的设计方式,即不在数据库层面上明确设定外键,而是将逻辑关系的控制交给了Hibernate框架。这种方式虽然...
本实例将聚焦于Hibernate中的一对多关系,这是一种常见的关联类型,尤其是在处理具有层次结构的数据时。双向一对多关系意味着一个实体可以拥有多个相关联的实体,同时每个相关联的实体也可以回指到原始实体。 **...
在Hibernate中,一对多关系可以通过在实体类中定义集合属性(如List、Set等)来实现,同时配合使用`@OneToMany`注解。例如,一个学生可以有多个课程,那么"学生"就是"一"端,"课程"就是"多"端。配置时,需要指定`...
在某些场景下,可能需要将原本的一对一关系转化为一对多或多对一关系,以优化性能。 ### 7. 事务管理 由于一对一关系涉及到两个实体,因此在处理这类关系时,需要注意事务管理,确保数据的完整性和一致性。 综上...
在数据库设计中,一对多关系表示一个实体可以与多个其他实体关联。例如,一个学生可以有多个课程,而一门课程可以被多个学生选修。在Hibernate中,我们通过在Java对象模型中定义List、Set或其他集合类型的属性来表示...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的...通过合理的配置和使用,开发者可以轻松管理实体之间的多对多关系,提高开发效率。理解并熟练掌握这部分知识对于提升Java企业级应用开发能力至关重要。
// 使用@ManyToMany注解表示多对多关系 @ManyToMany(cascade = CascadeType.ALL) @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = ...
同时,还需要在`Teacher`类中添加一个`List<Student>`字段,用`@OneToMany`注解来实现一对多关系,形成双向关联。 3. **多对多关系**: 学生和班级的关系可以是多对多,因为一个学生可以属于多个班级,反过来,一...
例如,@OneToOne 可用于表示一对一关系,@ManyToOne 和 @OneToMany 用于多对一和一对多关系。 4. **外键约束:** 在数据库层面,这些关联通常通过外键实现。Hibernate允许在映射文件或注解中指定外键的生成策略。 ...
在这个“hibernate实例(一对多,多对一)”的主题中,我们将深入探讨两种重要的关联关系:一对一(One-to-One)和一对多(One-to-Many)。 **一对一关联(One-to-One)** 在一对一关联中,一个实体与另一个实体之间...