表结构:

类图:

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. Win32中GDI+应用(三)---Graphics类
  2. 百度发布全新桌面版机器学习开发环境,12月赠送免费GPU算力
  3. 使用思科模拟器Packet Tracer与GNS3配置IPv6隧道
  4. android截图canvas为空,html2canvas截图空白问题的解决
  5. 牛客练习赛46 A 华华教奕奕写几何 (简单数学)
  6. python中安装opencv一直说不是内部或外部文件_Window系统下Python如何安装OpenCV库
  7. es对已有的索引给主键_ES中对索引的相关操作
  8. 【转载】Sitemap在线生成器,网站地图在线生成工具
  9. eclipse java字体 太小,如何在Eclipse for Java文本编辑器中更改字体大小?
  10. ImportError: No module named tensorrt
  11. cs6给画笔分组_画笔工具,PS cs6笔刷入门介绍
  12. 乘业绩创新高的东风,董明珠续任格力董事长几无悬念
  13. navicat执行sql文件报错:1840-@@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
  14. Huawei/华为WATCH GT2e智能手表,包邮免费送!
  15. OOA/OOD/OOP细讲
  16. 【算法】美团之大富翁问题(C++源码)
  17. js逆向-马蜂窝cookies分析
  18. javascript对json的处理最佳方法
  19. 蓝桥杯11-DS18B20的原理与使用
  20. 食蔬宝分拣称重软件V1.0

热门文章

  1. miui 8 android对应关系,小米回应MIUI版本和安卓版本没有对应关系 你怎么看
  2. java锁的有哪些_「并发编程」Java锁分类和特点有哪些
  3. oracle crs 不能启动,oracle 10g crs 不能启动问题解决案例
  4. 利用边缘灰度变化建模,来提高圆环直径求取精度
  5. 如何在Python中调用Windows的cmd命令?
  6. 2021年春季学期-信号与系统-第八次作业参考答案-第二小题
  7. 无线电能接收初步测试
  8. sublime_text配置php调试环境,SublimeText2配置PHP调试环境(在windows环境下)
  9. python支持的数据类型list_Python基本数据类型之list
  10. 本弗莱数据可视化的生产流程图_力控锂离子电池车间数据采集系统