User.hbm.xml
Role.hbm.xml
hibernate.cfg.xml
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/hibernate root org.hibernate.dialect.MySQLDialect true true update 4 thread
Demo.java
package com.ysong.test;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;import com.ysong.domain.Role;import com.ysong.domain.User;import com.ysong.utils.HibernateUtils;/* * 表达多对多关系 * * 多对多关系维护中,通过中间表来维护两表的关系,中间表有两列,都为主键。如果不加inverse属性,默认双方都要维护关系, * 会导致主键重复,所以会报错。 */public class Many2ManyDemo { @Test public void fun1() { Session session = HibernateUtils.openSession(); Transaction tx = session.beginTransaction(); try { // 操作 // 1.创建两个User User user1 = new User(); user1.setUser_name("杨先生"); User user2 = new User(); user2.setUser_name("李女士"); // 2.创建两个User Role role1 = new Role(); role1.setRole_name("程序员"); Role role2 = new Role(); role2.setRole_name("老师"); // 3.用户表达关系 user1.getRoles().add(role1); user1.getRoles().add(role2); user2.getRoles().add(role1); user2.getRoles().add(role2); // 4.角色表达关系 role1.getUsers().add(user1); role1.getUsers().add(user2); role2.getUsers().add(user1); role2.getUsers().add(user2); // 5.调用Save方法一次保存 session.save(user1); session.save(user2); session.save(role1); session.save(role2); } catch (Exception e) { tx.rollback(); } tx.commit(); session.close(); }}