一、核心配置文件

<?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();
}
}

补充:关系/对象映射 多对多关系(@ManyToMany 注释)【重新认识】

最新文章

  1. Mysql数据库的通用安装方法
  2. getElementsByClassName的兼容性
  3. powershell,系统学习的第一种脚本语言
  4. 红黑树(三)之 Linux内核中红黑树的经典实现
  5. JSP页面显示乱码
  6. JAVASCRIPT和JQUERY判断浏览器信息总汇(备忘)
  7. HW6.4
  8. MVC5-Scaffolder
  9. [RxJS] Transformation operator: scan
  10. 动态可视化库Vis.js:社交关系谱
  11. 解决vue路径中#号
  12. 初识 systemd
  13. geoserver矢量瓦片发服务前端展示偏移问题解决
  14. 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中
  15. [Swift]LeetCode40. 组合总和 II | Combination Sum II
  16. 【刷题】BZOJ 2407 探险
  17. 关于flex布局,我大多数常用的几个点
  18. SSH 登录时出现如下错误:Disconnected:No supported authentication methods available
  19. long的变量后面没有L加会有什么后果
  20. 【Nodejs】npm cnpm 淘宝镜像

热门文章

  1. 制作jar包到本地仓库
  2. Codeforces1238F. The Maximum Subtree(树形dp)
  3. vim替换
  4. AngularJs 简单实现全选,多选操作(转)
  5. InnoDB和MyISAM的六大区别
  6. setTimeout延迟加载
  7. 【NOIP2016提高A组模拟9.17】序列
  8. 查看是否安装jdk及路径
  9. VUE DIV模拟input框的基本处理
  10. 【知识】定时器setTimeout/setInterval执行时this指针指向问题