这是一个hibernate 多对一 一对多 基于外键双向关联
package com.bit.hibernate;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name="t_group")
public class Group {
private int id;
private String name;
private Set<User> users = new HashSet<User>();
@Id
@GeneratedValue
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;
}
@OneToMany(mappedBy="group"
)
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}
---------------------------------------------------------------------------------
package com.bit.hibernate;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="t_user")
public class User {
private int id;
private String name;
private Group group;
@ManyToOne(cascade={CascadeType.ALL})
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
@Id
@GeneratedValue
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;
}
}
---------------------------------------------------------------------------------
package com.bit.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
User user = new User();
user.setName("u1");
Group group = new Group();
group.setName("g1");
group.getUsers().add(user);
user.setGroup(group);
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
}
}
双向关联必设mappedBy 外键加到多的一方 还有一个cascade叫级联 也就是说在保存user的时候 自动保存了相应的group
分享到:
相关推荐
标题中的“hibernate_1700_one2many_many2one_bi_crud(5)”指的是一项关于Hibernate框架的教程,重点在于介绍一对多(One-to-Many)和多对一(Many-to-One)双向关联关系的创建、读取、更新和删除(CRUD)操作。...
在这个“Struts_Spring_Hibernate_CRUD操作案例_分页查询”中,我们将深入探讨如何整合这三大框架实现数据的创建、读取、更新、删除(CRUD)以及分页查询。 1. **Struts框架**: - **Action类**:它是业务逻辑的...
通过Hibernate,开发者可以创建Java对象(实体类),这些对象与数据库中的表进行映射,从而实现对数据库数据的CRUD(创建、读取、更新、删除)操作。 **实体类编写规则**: 1. 实体类的属性应声明为私有的。 2. ...
标题“spring_hibernate_in one and find more than 1 rs”暗示了这个压缩包可能包含一个整合Spring和Hibernate的示例项目,重点在于在一个查询中找到多条结果。在这个项目中,Spring作为依赖注入和框架管理工具,而...
- **持久化层(Persistence Layer)**:包含Hibernate Session工厂和服务类,处理数据库的CRUD操作。 - **控制器(Controller)**:Struts的Action类,接收并处理用户请求,调用业务逻辑方法。 - **业务逻辑层...
标题 "hibernate_____实现ssh2用的hibernate" 提到的是在SSH2(Struts、Spring、Hibernate)框架中使用Hibernate的情况。SSH2是中国Java Web开发领域中广泛使用的三大开源框架集成,用于构建高效、可扩展的企业级...
【描述】"hibernate练习代码"表明这是与Hibernate相关的编程练习,可能包括创建、读取、更新和删除(CRUD)操作,实体关系映射,事务管理,查询优化等实践内容。用户可能通过这些代码来理解和掌握Hibernate如何在...
同时,还能了解到如何配置SessionFactory,创建DAO(Data Access Object)层,以及如何利用Hibernate的Session对象进行CRUD(Create, Read, Update, Delete)操作。 总结来说,"struts_hibernate_bbs.rar"是一个很...
2. **配置文件**:`hibernate.cfg.xml`是Hibernate的主要配置文件,包含数据库连接信息、SessionFactory的配置等,它是启动Hibernate的第一步。 3. **实体类(Entity)**:在Hibernate中,Java类对应数据库中的表,...
【标题】"test_hibernate_oracle_03.zip"是一个包含使用Hibernate框架与Oracle数据库进行CRUD操作(创建、读取、更新、删除)的示例项目。这个压缩包提供了有关如何通过Hibernate在Oracle数据库中执行插入、查询、...
Struts_Spring__Hibernate_指导学生做ssh项目 简单易学_Struts_Spring__Hibernate_指导学生做ssh项目
在本项目中,Hibernate可能用于建立Java对象与数据库表之间的映射,执行CRUD(创建、读取、更新、删除)操作,以及管理数据库连接。 "Hadoqw"看起来像是一个拼写错误或者可能是项目中的特定术语,但在常规的SSH框架...
- `hibernate_17_001_jdbc`: 这部分代码展示了如何使用Hibernate与JDBC进行交互,包括创建SessionFactory、Session对象,以及执行基本的CRUD操作。 - `hibernate_17_003_setQueryCondition`: 这部分内容可能涉及到...
而`hibernate_plugs_2.zip`这个压缩包很可能是关于Hibernate插件及其相关示例的集合,旨在帮助开发者更好地理解和利用这些工具来提升开发效率。 首先,我们来探讨一下Hibernate的核心概念。Hibernate允许开发者用...
标题中的“FF.MSOL.SOA.rar_jpa hibernate_spring hibernate_spring mvc”表明这是一个关于Java企业级开发的资源包,其中涉及到的主要技术栈是JPA(Java Persistence API)、Hibernate、Spring以及Spring MVC。...
综上所述,"Struts2_CRUD"示例涵盖了使用Struts2框架进行基本数据操作的核心概念和实践。通过学习这个示例,初学者可以理解如何在Struts2中组织Action、Form、Interceptor、配置文件和视图,以及如何实现CRUD操作和...
标题中的"first_demo.rar_DEMO_struts2_struts2_hibernate_简历"表明这是一个关于使用Struts2和Hibernate框架开发的初级示例项目,主要功能是实现简历的创建、查看、编辑和删除操作。这个DEMO是针对初学者或者开发者...
2. **配置文件(hibernate.cfg.xml)**:在使用Hibernate时,我们需要配置一个XML文件,定义数据库连接信息、会话工厂等参数。这些配置信息是启动Hibernate并建立与数据库连接的基础。 3. **实体类(Entity)**:...
2. **JPA(Java Persistence API)**:虽然Hibernate最初并不依赖JPA,但在3.5版本中,已经完全兼容JPA标准,使得开发者可以选择使用JPA API进行编程,同时享受到Hibernate的强大功能。 3. **Hibernate Annotations...
《Hibernate教程:从入门到精通》 在Java世界中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本教程针对初学者,旨在提供全面的Hibernate学习指南,结合Eclipse集成开发环境...