hibernate它 11.many2many双向
表结构:
类图:
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双向相关推荐
- hibernate的一对多双向关联映射----客户和订单关系
客户和订单关系:客户是一的一方,订单是多的一方. customer表: CREATE TABLE `customer` ( `ID` int(4) NOT NULL AUTO_INCREMENT , ...
- hibernate映射一对多双向关联关系实例
在电子商务应用中,经常会有这样的需求:根据给定的客户,得到该客户的所有订单:根据给定的订单,得到该订单的所属客户.对于这种双向关联的情况,在Hibernate应用中,也有人叫多对一双向关联,只是叫法不 ...
- hibernate 一对多(one-to-many)双向关联
一对多(one-to-many)双向关联实例(Department- Employee) 这里的一对多双向关联是在域模型(实体对象模型)上的概念,在关系数据库中,只存在外键参照关系,而且总是由&quo ...
- Hibernate事实:有利于双向集vs列表
Hibernate是一个很棒的ORM工具,它极大地简化了开发,但是如果您想正确地使用它,则有很多陷阱. 在大中型项目中,双向父子关联非常常见,这使我们能够浏览给定关系的两端. 在控制关联的持久/合并部 ...
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式
首先还是来构造一个实际应用的场景,比如实体类车辆(Car),它具有以下属性:Id,品牌(brand),车牌(lisencePlate):实体类车牌(LisencePlate),它具有以下属性:Id,号 ...
- Hibernate 实体关联关系映射----总结
http://lavasoft.blog.51cto.com/62575/39398 Hibernate 实体关联关系映射----总结 花了三天的业余时间,终于写完了Hibernate关联关系映射的所 ...
- Hibernate(十):n-n关联关系
背景: 在实际开发中我们会遇到表的多对多关联,比如:一篇博客文章,它可以同时属于JAVA分类.Hibernate分类. 因此,我们在hibernate的学习文章系列中,需要学会如何使用hibernat ...
- Struts hibernate Spring 框架原理
转自:http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156521.html 原理: 1.通过Configuration().configu ...
- struts2、hibernate工作原理和流程
2019独角兽企业重金招聘Python工程师标准>>> struts2原理 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Control ...
最新文章
- Win32中GDI+应用(三)---Graphics类
- 百度发布全新桌面版机器学习开发环境,12月赠送免费GPU算力
- 使用思科模拟器Packet Tracer与GNS3配置IPv6隧道
- android截图canvas为空,html2canvas截图空白问题的解决
- 牛客练习赛46 A	华华教奕奕写几何 (简单数学)
- python中安装opencv一直说不是内部或外部文件_Window系统下Python如何安装OpenCV库
- es对已有的索引给主键_ES中对索引的相关操作
- 【转载】Sitemap在线生成器,网站地图在线生成工具
- eclipse java字体 太小,如何在Eclipse for Java文本编辑器中更改字体大小?
- ImportError: No module named tensorrt
- cs6给画笔分组_画笔工具,PS cs6笔刷入门介绍
- 乘业绩创新高的东风,董明珠续任格力董事长几无悬念
- navicat执行sql文件报错:1840-@@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
- Huawei/华为WATCH GT2e智能手表,包邮免费送!
- OOA/OOD/OOP细讲
- 【算法】美团之大富翁问题(C++源码)
- js逆向-马蜂窝cookies分析
- javascript对json的处理最佳方法
- 蓝桥杯11-DS18B20的原理与使用
- 食蔬宝分拣称重软件V1.0
热门文章
- miui 8 android对应关系,小米回应MIUI版本和安卓版本没有对应关系 你怎么看
- java锁的有哪些_「并发编程」Java锁分类和特点有哪些
- oracle crs 不能启动,oracle 10g crs 不能启动问题解决案例
- 利用边缘灰度变化建模,来提高圆环直径求取精度
- 如何在Python中调用Windows的cmd命令?
- 2021年春季学期-信号与系统-第八次作业参考答案-第二小题
- 无线电能接收初步测试
- sublime_text配置php调试环境,SublimeText2配置PHP调试环境(在windows环境下)
- python支持的数据类型list_Python基本数据类型之list
- 本弗莱数据可视化的生产流程图_力控锂离子电池车间数据采集系统