hibernate多对多增删改查

来源:互联网 发布:apache ant 1.9.9 bin 编辑:程序博客网 时间:2024/06/07 16:39

Hibernate多对多增删改查

JavaEE 2010-06-05 12:09:34 阅读16 评论0 字号:

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

}