Java学习笔记之Hibernate-用注解方式实现多对多

来源:互联网 发布:纹理过滤 三线性优化 编辑:程序博客网 时间:2024/06/02 03:49

前言:用户和角色是多对多关系,用这里例子联系注解方式配置多对多关系,代码如下。

package com.web0822;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.ManyToMany;import javax.persistence.Table;@Entity@Table(name="role")public class Role {    @Id    @GeneratedValue(strategy=GenerationType.AUTO)    @Column(name="rid")    private int rid;    @Column(name="name")    private String name;    @ManyToMany(mappedBy="roles",cascade=CascadeType.ALL)    private Set<User> users;    public Set<User> getUsers() {        return users;    }    public void setUsers(Set<User> users) {        this.users = users;    }    public int getRid() {        return rid;    }    public void setRid(int rid) {        this.rid = rid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Role() {    }    public Role(int rid, String name) {        super();        this.rid = rid;        this.name = name;    }    @Override    public String toString() {        return "Role [rid=" + rid + ", name=" + name + "]";    }}
package com.web0822;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;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.Table;@Entity@Table(name="user")public class User {    @Id    @Column(name="uid")    @GeneratedValue(strategy=GenerationType.AUTO)    private int uid;    @Column(name="name")    private String name;    @ManyToMany(cascade=CascadeType.ALL)    @JoinTable(            name="user_role",            joinColumns=@JoinColumn(name="user_id"),            inverseJoinColumns=@JoinColumn(name="role_id")    )    private Set<Role> roles;    public Set<Role> getRoles() {        return roles;    }    public void setRoles(Set<Role> roles) {        this.roles = roles;    }    public int getUid() {        return uid;    }    public void setUid(int uid) {        this.uid = uid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public User() {        super();        // TODO Auto-generated constructor stub    }    @Override    public String toString() {        return "User [uid=" + uid + ", name=" + name + "]";    }    public User(int uid, String name) {        super();        this.uid = uid;        this.name = name;    }}
package com.web0822;import java.util.HashSet;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;public class HibernateTest {    @Test    public void testSession(){        Session session = HibernateUtils.getSessionFactory().openSession();        System.out.println(session);        session.close();    }    @Test    public void test1(){        /**         * 新建User Role 建立关系  session只保存Role         */        Session session = HibernateUtils.getSessionFactory().openSession();        Transaction transaction = session.beginTransaction();        User user = new User();        user.setName("小华");        Role role = new Role();        role.setName("增加权限");        HashSet<User> users = new HashSet<User>();        users.add(user);        role.setUsers(users);        HashSet<Role> roles = new HashSet<Role>();        roles.add(role);        user.setRoles(roles);        session.save(role);        transaction.commit();        session.close();    }    @Test    public void test2(){        /**         * 新建User Role 建立关系  session只保存User         */        Session session = HibernateUtils.getSessionFactory().openSession();        Transaction transaction = session.beginTransaction();        User user = new User();        user.setName("小米");        Role role = new Role();        role.setName("修改权限");        HashSet<User> users = new HashSet<User>();        users.add(user);        role.setUsers(users);        HashSet<Role> roles = new HashSet<Role>();        roles.add(role);        user.setRoles(roles);        session.save(user);        transaction.commit();        session.close();    }    @Test    public void test3(){        /**         * 新建User 获取Role 建立关系  session只更新role         */        Session session = HibernateUtils.getSessionFactory().openSession();        Transaction transaction = session.beginTransaction();        User user = new User();        user.setName("小米1");        Role role = (Role) session.get(Role.class, 1);        HashSet<Role> roles = new HashSet<Role>();        roles.add(role);        user.setRoles(roles);        role.getUsers().add(user);        session.update(role);        transaction.commit();        session.close();    }    @Test    public void test4(){        /**         * 新建User 获取Role 建立关系  session只保存user         */        Session session = HibernateUtils.getSessionFactory().openSession();        Transaction transaction = session.beginTransaction();        User user = new User();        user.setName("小米2");        Role role = (Role) session.get(Role.class, 2);        HashSet<Role> roles = new HashSet<Role>();        roles.add(role);        user.setRoles(roles);        role.getUsers().add(user);        session.save(user);        transaction.commit();        session.close();    }    @Test    public void test5(){        /**         * 获取User 获取Role 建立关系           */        Session session = HibernateUtils.getSessionFactory().openSession();        Transaction transaction = session.beginTransaction();        User user = (User) session.get(User.class, 3);        Role role = (Role) session.get(Role.class, 2);        user.getRoles().add(role);        role.getUsers().add(user);        session.update(user);        transaction.commit();        session.close();    }    @Test    public void test6(){        /**         * 获取User 获取Role 删除关系           */        Session session = HibernateUtils.getSessionFactory().openSession();        Transaction transaction = session.beginTransaction();        User user = (User) session.get(User.class, 3);        user.setRoles(null);        session.update(user);        transaction.commit();        session.close();    }    @Test    public void test7(){        /**         * 获取User 获取Role 删除实体           */        Session session = HibernateUtils.getSessionFactory().openSession();        Transaction transaction = session.beginTransaction();        User user = (User) session.get(User.class, 3);        session.delete(user);        transaction.commit();        session.close();    }}
package com.web0822;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;public class HibernateUtils {    private static SessionFactory sessionFactory;    private static ServiceRegistry serviceRegistry;    public static SessionFactory getSessionFactory() {        Configuration configuration = new Configuration();        configuration.configure();        serviceRegistry = new ServiceRegistryBuilder().applySettings(                configuration.getProperties()).buildServiceRegistry();        sessionFactory = configuration.buildSessionFactory(serviceRegistry);        return sessionFactory;    }}
原创粉丝点击