Hibernate多对多增删改查

.

package com.qulx.client;

import java.util.Iterator;
import java.util.List;

import org.hibernate.Hibernate;
import org.hibernate.Session;

import com.qulx.pojo.Roles;
import com.qulx.pojo.Users;
import com.qulx.util.HibernateSessionFactory;

public class M2MClient {

/**
  * 保存用户
  */
public void saveUser(){ 
  Users user = new Users();
  user.setUsername("田七");
  user.setUserpass("123456");
 
  Session session = HibernateSessionFactory.getSession();
  session.save(user);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
}

/**
  * 保存角色
  */
public void saveRole(){
 
  Roles role = new Roles();
  role.setRolename("一级管理员");
  role.setRolecode("admin");
 
  Session session = HibernateSessionFactory.getSession();
  session.save(role);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
}

/**
  * 给用户赋予角色(一个或多个)
  * 向中间表添加数据
  *  * Users.hbm.xml中inverse=false
  * Roles.hbm.xml中inverse=true
  */
public void grantUser(long uid,long r1,long r2,long r3){
 
  Session session = HibernateSessionFactory.getSession();
  Users user = (Users) session.get("com.qulx.pojo.Users", uid);
  Roles role1 = (Roles) session.get(Roles.class, r1);
  Roles role2 = (Roles) session.get(Roles.class, r2);
  Roles role3 = (Roles) session.get(Roles.class, r3);
  //给用户授权
  user.getRoleses().add(role1);
  user.getRoleses().add(role2);
  user.getRoleses().add(role3);
  session.update(user);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
}


/**
  * 修改用户的角色
  */
public void updateUserByRole(long uid,long r1,long r2){
 
  Session session = HibernateSessionFactory.getSession();
  Users user = (Users) session.get("com.qulx.pojo.Users", uid);
  Roles role1 = (Roles) session.get(Roles.class, r1);
  Roles role2 = (Roles) session.get(Roles.class, r2);
 
  user.getRoleses().add(role1);
  user.getRoleses().remove(role2);
  session.update(user);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
}

/**
  * 删除用户,不删除角色
  * Users.hbm.xml中inverse=false
  * Roles.hbm.xml中inverse=true
  */
public void deleteUserByID(long uid){
 
  Session session = HibernateSessionFactory.getSession();
  Users user = (Users) session.get(Users.class, uid);
  session.delete(user);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
}

/**
  * 删除角色,不删除用户
  * Users.hbm.xml中inverse=false
  * Roles.hbm.xml中inverse=true
  *
  * Hibernate: delete from A722.USERROLE where USERID=? and ROLEID=?
Hibernate: delete from A722.USERROLE where USERID=? and ROLEID=?
Hibernate: delete from A722.USERROLE where USERID=? and ROLEID=?
Hibernate: delete from A722.ROLES where ROLEID=?
  */
public void deleteRoleByID(long rid){
 
  Session session = HibernateSessionFactory.getSession();
  Roles role = (Roles) session.get(Roles.class, rid);
  Iterator users = role.getUserses().iterator();
  while(users.hasNext()){
   Users user = (Users)users.next();
   user.getRoleses().remove(role);
  }
  session.delete(role);
  session.beginTransaction().commit();
  HibernateSessionFactory.closeSession();
}
 
/**
  * 加载用户,获取所有角色
  */
public Users checkUserByID(long uid){
  Session session = HibernateSessionFactory.getSession();
  Users user = (Users)session.get(Users.class,uid);
  if(!Hibernate.isInitialized(user.getRoleses())){
   Hibernate.initialize(user.getRoleses());
  }
  HibernateSessionFactory.closeSession();
  return user;
}

/**
  * 加载用户,获取所有角色
  */

public List checkRolesByUid(long uid){
  Session session = HibernateSessionFactory.getSession();
 
  List roles = session.createSQLQuery("select * from roles where roleid in (select roleid from userrole where userid="+uid+")").addEntity(Roles.class)
     .list();
 
  HibernateSessionFactory.closeSession();
  System.out.println(roles.size());
  return null;
}

public static void main(String[] args) {
 
  M2MClient client = new M2MClient();
  //client.saveUser();
  //client.saveRole();
  //client.grantUser1((long)3,(long)1, (long)4,(long)2);
  //client.updateUserByRole((long)2, (long)1, (long)2);
  //client.deleteUserByID((long)2);
  //client.deleteRoleByID1((long)5)
 
  client.checkRolesByUid((long)5);
  //Users user = client.checkUserByID((long)5);
  //System.out.println(user.getRoleses().size());
 
}

}

你可能感兴趣的:(Hibernate,xml)