【Hibernate】---【注解】多对多
一、核心配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="current_session_context_class">thread</property> <!-- <mapping resource="com/chinasofti/entity/User.hbm.xml" /> <mapping resource="com/chinasofti/entity/Role.hbm.xml" /> --> <mapping class="com.chinasofti.entity.User"/> <mapping class="com.chinasofti.entity.Role"/> </session-factory> </hibernate-configuration>
二、实体类
User
package com.chinasofti.entity; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(name="T_USER3") public class User { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer user_id; private String user_name; private String user_password; @ManyToMany(cascade=CascadeType.ALL) @JoinTable(name="user_role3",joinColumns=@JoinColumn(name="user_id"),inverseJoinColumns=@JoinColumn(name="role_id")) private Set<Role> roles = new HashSet<Role>(); public Set<Role> getRoles() { return roles; } public void setRoles(Set<Role> roles) { this.roles = roles; } public Integer getUser_id() { return user_id; } public void setUser_id(Integer user_id) { this.user_id = user_id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getUser_password() { return user_password; } public void setUser_password(String user_password) { this.user_password = user_password; } @Override public String toString() { return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_password=" + user_password + "]"; } }
Role
package com.chinasofti.entity; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name="T_ROLE3") public class Role { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer role_id; private String role_name; private String role_memo; @ManyToMany(cascade=CascadeType.ALL) @JoinTable(name="user_role3",joinColumns=@JoinColumn(name="role_id"),inverseJoinColumns=@JoinColumn(name="user_id")) private Set<User> user = new HashSet<User>(); public Set<User> getUser() { return user; } public void setUser(Set<User> user) { this.user = user; } public Integer getRole_id() { return role_id; } public void setRole_id(Integer role_id) { this.role_id = role_id; } public String getRole_name() { return role_name; } public void setRole_name(String role_name) { this.role_name = role_name; } public String getRole_memo() { return role_memo; } public void setRole_memo(String role_memo) { this.role_memo = role_memo; } @Override public String toString() { return "Role [role_id=" + role_id + ", role_name=" + role_name + ", role_memo=" + role_memo + "]"; } }
三、封装类
package com.chinasofti.entity; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { static Configuration CONFIGURATION = null; static SessionFactory SESSION_FACTORY = null; static Session SESSION = null; static{ CONFIGURATION = new Configuration(); CONFIGURATION.configure(); SESSION_FACTORY = CONFIGURATION.buildSessionFactory(); SESSION = SESSION_FACTORY.openSession(); } public static SessionFactory getSessionFactory(){ return SESSION_FACTORY; } public static Session openSession(){ return SESSION; } }
四、测试类
package com.chinasofti.entity; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; public class TestAnnotation { @Test public void removeRoleForUser1(){ Session session = HibernateUtil.openSession(); session.close(); } /** * 添加用户以、角色 */ @Test public void testManytoManyInsert(){ Session session = HibernateUtil.openSession(); Transaction transaction = session.beginTransaction(); //创建第一个用户 User user1 =new User(); user1.setUser_name("张三"); user1.setUser_password("zhagsan"); //创建第二个用户 User user2 = new User(); user2.setUser_name("李四"); user2.setUser_password("lisi"); //创建第三个用户 User user3 =new User(); user3.setUser_name("王五"); user3.setUser_password("wangwu"); //创建第一个角色 Role role1 = new Role(); role1.setRole_name("校长"); role1.setRole_memo("校长"); //创建第二个角色 Role role2 = new Role(); role2.setRole_name("主任"); role2.setRole_memo("主任"); //创建第三个角色 Role role3 = new Role(); role3.setRole_name("门房"); role3.setRole_memo("门房"); //创建第四个角色 Role role4 = new Role(); role4.setRole_name("体育老师"); role4.setRole_memo("体育老师"); //把角色放到用户里 user1.getRoles().add(role1); user1.getRoles().add(role2); user2.getRoles().add(role2); user2.getRoles().add(role4); user3.getRoles().add(role3); user3.getRoles().add(role4); //保存 session.save(user1); session.save(user2); session.save(user3); transaction.commit(); session.close(); } }
请留下你的足迹...