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; }}
阅读全文
0 0
- Java学习笔记之Hibernate-用注解方式实现多对多
- Java学习笔记之Hibernate-用注解方式实现一对多单项
- Java学习笔记之Hibernate-用注解方式实现一对多双向关联
- Hibernate双向多对多 注解方式
- 2.2、Hibernate用注解方式实现一对多、多对多关系
- hibernate 注解实现多对多
- hibernate[注解]实现[多对多]关系
- Hibernate之一对多(注解实现)
- hibernate注解方式实现一对多映射
- hibernate注解方式实现一对多映射
- hibernate注解方式实现一对多映射
- hibernate注解方式实现一对多映射
- hibernate 注解方式,实现一对多映射
- hibernate注解方式实现一对多映射
- Hibernate 多对多 中间表含有其他字段 注解方式实现
- Hibernate教程之六一对多&多对一实现基于xml和注解
- Hibernate使用注解方式完成双向多对多映射
- hibernate使用注解的方式进行多对一关联
- 第一类斯特林数和第二类斯特林数
- Switch games
- 快速幂 LightOJ 1282
- HDMI管脚定义
- 顺序表应用6:有序顺序表查询
- Java学习笔记之Hibernate-用注解方式实现多对多
- hdu2665区间第K大+主席树解题报告
- tomcat部署项目,jsp无法打开问题
- Red and Black
- electron + vue 实践项目
- 两粒种子,一片森林 jzoj 2017.8.22 B组
- HDMI之DDC通道
- 添加的依赖
- 多线程