表结构:

类图:

CRUD:

User

package com.demo.model;import java.util.Set;/**用户信息* @author wobendiankun*2014-10-29 下午11:05:26*/
public class User {/***用户Id */private int userId;/*** username*/private String userName;/*** 密码*/private String password;private Student student ;private Set<Role> roles; public User() {}public User(int userId) {this.userId = userId;}public User(String userName, String password) {this.userName = userName;this.password = password;}public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}public Set<Role> getRoles() {return roles;}public void setRoles(Set<Role> roles) {this.roles = roles;}}

Role

package com.demo.model;import java.util.Set;/**角色信息* @author wobendiankun*2014-11-2 下午08:29:54*/
public class Role {/*** 角色id*/private int roleId;/*** 角色名称*/private String roleName;private Set<User> users;public Role() {}public Role(int roleId) {this.roleId = roleId;}public Role(String roleName) {this.roleName = roleName;}public int getRoleId() {return roleId;}public void setRoleId(int roleId) {this.roleId = roleId;}public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}public Set<User> getUsers() {return users;}public void setUsers(Set<User> users) {this.users = users;}}

配置:

User.hbm.xml

<?xml version="1.0"?>
<!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.demo.model.User" table="t_user"><id name="userId" column="user_id"><generator class="sequence"><param name="sequence">SEQ_T_USER</param></generator></id><property name="userName" column="user_name" /><property name="password" /><many-to-one name="student" column="student_id" unique="true"></many-to-one><set name="roles" table="t_user_role" inverse="true"><key column="user_id"></key><many-to-many class="com.demo.model.Role" column="role_id"></many-to-many></set></class>
</hibernate-mapping>

Role.hbm.xml

<?xml version="1.0"?

> <!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.demo.model.Role" table="t_role"> <id name="roleId" column="role_id"> <generator class="sequence"> <param name="sequence">SEQ_T_ROLE</param> </generator> </id> <property name="roleName" column="role_name" /> <set name="users" table="t_user_role" lazy="extra"> <key column="role_id"></key> <many-to-many class="com.demo.model.User" column="user_id"></many-to-many> </set> </class> </hibernate-mapping>

add:

@Testpublic void addTest(){User user1=new User("赵三","111");User user2=new User("无四","111");Set<User> users=new HashSet<User>();users.add(user1);users.add(user2);Role role=new Role("財务部");Set<Role> roles=new HashSet<Role>();//设置双向关系role.setUsers(users);user1.setRoles(roles);user2.setRoles(roles);Session session = null;try {session = HibernateUtil.openSession();session.beginTransaction();session.save(role);session.save(user1);session.save(user2);session.getTransaction().commit();} catch (Exception e) {session.getTransaction().rollback();e.printStackTrace();} finally {HibernateUtil.closeSession(session);}}

发出sql:

Hibernate: insert into t_role (role_name, role_id) values (?

, ?

) Hibernate: insert into t_user (user_name, password, student_id, user_id) values (?, ?

, ?

, ?) Hibernate: insert into t_user (user_name, password, student_id, user_id) values (?, ?

, ?, ?) Hibernate: insert into t_user_role (role_id, user_id) values (?

, ?) Hibernate: insert into t_user_role (role_id, user_id) values (?, ?)

load;

@Testpublic void loadTest(){Session session = null;try {session = HibernateUtil.openSession();session.beginTransaction();Role role=(Role)session.load(Role.class,3);System.out.println("角色名称:"+role.getRoleName());System.out.println("users:"+role.getUsers());session.getTransaction().commit();} catch (Exception e) {session.getTransaction().rollback();e.printStackTrace();} finally {HibernateUtil.closeSession(session);}}

发出sql:

Hibernate: select role0_.role_id as role1_4_0_, role0_.role_name as role2_4_0_ from t_role role0_ where role0_.role_id=?
角色名称:財务部
Hibernate: select users0_.role_id as role2_4_1_, users0_.user_id as user1_1_, user1_.user_id as user1_2_0_, user1_.user_name as user2_2_0_, user1_.password as password2_0_, user1_.student_id as student4_2_0_ from t_user_role users0_ inner join t_user user1_ on users0_.user_id=user1_.user_id where users0_.role_id=?

users:[com.demo.model.User@1f31652, com.demo.model.User@3e96cf]

版权声明:本文博客原创文章,博客,未经同意,不得转载。

hibernate它 11.many2many双向相关推荐

  1. hibernate的一对多双向关联映射----客户和订单关系

    客户和订单关系:客户是一的一方,订单是多的一方. customer表: CREATE TABLE `customer` ( `ID` int(4) NOT NULL AUTO_INCREMENT , ...

  2. hibernate映射一对多双向关联关系实例

    在电子商务应用中,经常会有这样的需求:根据给定的客户,得到该客户的所有订单:根据给定的订单,得到该订单的所属客户.对于这种双向关联的情况,在Hibernate应用中,也有人叫多对一双向关联,只是叫法不 ...

  3. hibernate 一对多(one-to-many)双向关联

    一对多(one-to-many)双向关联实例(Department- Employee) 这里的一对多双向关联是在域模型(实体对象模型)上的概念,在关系数据库中,只存在外键参照关系,而且总是由&quo ...

  4. Hibernate事实:有利于双向集vs列表

    Hibernate是一个很棒的ORM工具,它极大地简化了开发,但是如果您想正确地使用它,则有很多陷阱. 在大中型项目中,双向父子关联非常常见,这使我们能够浏览给定关系的两端. 在控制关联的持久/合并部 ...

  5. Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式

    首先还是来构造一个实际应用的场景,比如实体类车辆(Car),它具有以下属性:Id,品牌(brand),车牌(lisencePlate):实体类车牌(LisencePlate),它具有以下属性:Id,号 ...

  6. Hibernate 实体关联关系映射----总结

    http://lavasoft.blog.51cto.com/62575/39398 Hibernate 实体关联关系映射----总结 花了三天的业余时间,终于写完了Hibernate关联关系映射的所 ...

  7. Hibernate(十):n-n关联关系

    背景: 在实际开发中我们会遇到表的多对多关联,比如:一篇博客文章,它可以同时属于JAVA分类.Hibernate分类. 因此,我们在hibernate的学习文章系列中,需要学会如何使用hibernat ...

  8. Struts hibernate Spring 框架原理

    转自:http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156521.html 原理: 1.通过Configuration().configu ...

  9. struts2、hibernate工作原理和流程

    2019独角兽企业重金招聘Python工程师标准>>> struts2原理 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Control ...

最新文章

  1. 几道有意思的逻辑分析题
  2. Linux内核中的进程等待与其实现解析
  3. http 301 和 302的区别
  4. 不能错过的RTS经典:《蘑菇战争2》是如何做玩法创新的?
  5. Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】
  6. FFMPEG解码多线程
  7. Vue项目npm打包推荐方式
  8. suse 9 图形安装出现4画面
  9. 电力企业信息化建设方案之调度信息报送系统
  10. caffe+GPU︱AWS.G2+Ubuntu14.04+GPU+CUDA8.0+cudnn8.0
  11. 网站CPU占满,微信经常SSL不能建立的错误排查
  12. DNS Server
  13. android电视盒子蓝牙遥控器app,Android TV 智能电视/盒子 APP 开发焦点控制 两种方法实例...
  14. Linux用户和用户组的管理-羽飞作品
  15. idea 去掉author波浪线
  16. 【高并发高性能高可用之海量数据MySQL实战-3】-MySQL逻辑架构图
  17. 六种礼仪帮助你赢得面试
  18. 代码覆盖率工具BullseyeCoverage研究
  19. nyoj 628 小媛在努力【大水题】
  20. 华为服务器装红帽7系统教程,安装红帽linux7的步骤

热门文章

  1. wordpress模版post.php,WordPress主题开发手册
  2. 第十六智能车竞赛总决赛获奖证书寄送
  3. 百度智慧交通(东部赛区)比赛的通知
  4. 2021年春季学期-信号与系统-第十二次作业参考答案-第七小题
  5. postgres sql 多表联合查询_从零学会SQL-多表查询
  6. Java 二叉树 前序_java实现二叉树前序中序后序层次遍历
  7. 关于常见的底层驱动源码资料
  8. mui后端开发php,PHP解决mui中ajax的跨域问题
  9. Linux系统备份树莓派,全平台备份树莓派的方法
  10. 概率论与数理统计专业术语