package com.sg.domain; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(name="t_group") public class Group { private Integer id; private String descs; private Set<User> users = new HashSet<User>(); @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getDescs() { return descs; } public void setDescs(String descs) { this.descs = descs; } @OneToMany(mappedBy="group",cascade={CascadeType.ALL},fetch=FetchType.EAGER) public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } }
package com.sg.domain; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name="t_user") public class User { private Integer id; private String name; private Group group; @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToOne(cascade={CascadeType.ALL}) @JoinColumn(name="groupId") public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } }
package com.sg.hibernate.Test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import com.sg.domain.Group; import com.sg.domain.User; public class TeacherTest { private static SessionFactory sf = null; @BeforeClass public static void beforeClass(){ new SchemaExport(new AnnotationConfiguration().configure()).create(false, true); sf = new AnnotationConfiguration().configure().buildSessionFactory(); } @AfterClass public static void afterClass(){ sf.close(); } @Test public void testSaveUser(){ User u = new User(); u.setName("sungang"); Group g = new Group(); g.setDescs("nihao"); u.setGroup(g); Session session = sf.getCurrentSession(); Transaction tr = session.beginTransaction(); //可以手动添加 //session.save(g); //也可以靠级联关系 session.save(u); tr.commit(); } @Test public void testSaveGroup(){ User u1 = new User(); u1.setName("u11"); User u2 = new User(); u2.setName("u22"); Group g = new Group(); g.setDescs("group1"); g.getUsers().add(u1); g.getUsers().add(u2); // u1.setGroup(g); u2.setGroup(g); Session session = sf.getCurrentSession(); Transaction tr = session.beginTransaction(); //可以手动添加 //session.save(u1); //session.save(u2); //也可以靠级联关系 session.save(g); tr.commit(); } @Test public void testGetUser(){ //取多的那一方 默认会把一的一方也取出来 不需要去配置级联关系 /** * select user0_.id as id2_1_, user0_.groupId as groupId2_1_, user0_.name as name2_1_, group1_.id as id3_0_, group1_.descs as descs3_0_ from t_user user0_ left outer join t_group group1_ on user0_.groupId=group1_.id where user0_.id=? */ testSaveGroup(); Session session = sf.getCurrentSession(); Transaction tr = session.beginTransaction(); User user = (User)session.get(User.class, 1); System.out.println(user.getName()); System.out.println(user.getGroup().getId()); tr.commit(); } @Test public void testGetGroup(){ testSaveGroup(); //取一的那一方 默认不会把多的一方也取出来 就是有级联关系也不会取出 //要想取出来 需要配置fetch=FetchType.EAGER /** * select group0_.id as id3_1_, group0_.descs as descs3_1_, users1_.groupId as groupId3_, users1_.id as id3_, users1_.id as id2_0_, users1_.groupId as groupId2_0_, users1_.name as name2_0_ from t_group group0_ left outer join t_user users1_ on group0_.id=users1_.groupId where group0_.id=? */ Session session = sf.getCurrentSession(); Transaction tr = session.beginTransaction(); Group g = (Group) session.get(Group.class, 1); for(User u : g.getUsers()){ System.out.println(u.getName()+"======"); } } @Test public void testUpdateUser(){ //更新多的一方 会相应的可以把一的一方也更新 不需配置级联就可以 testSaveGroup(); Session session = sf.getCurrentSession(); Transaction tr = session.beginTransaction(); User user = (User)session.get(User.class, 1); user.setName("user"); user.getGroup().setDescs("descs"); session.update(user); tr.commit(); } @Test public void testUpdateUser2(){ //更新多的一方 在游离状态更新 要想更新一的一方 需要配置级联ALL testSaveGroup(); Session session = sf.getCurrentSession(); Transaction tr = session.beginTransaction(); User user = (User)session.get(User.class, 1); tr.commit(); user.setName("user1"); user.getGroup().setDescs("descs1"); Session session2 = sf.getCurrentSession(); Transaction tr2 = session2.beginTransaction(); session2.update(user); tr2.commit(); } @Test public void testDeleteUser(){ // testSaveGroup(); Session session = sf.getCurrentSession(); Transaction tr = session.beginTransaction(); User user = (User)session.load(User.class, 1); //先结束关联关系 //user.setGroup(null); //session.delete(user); //也可以直接hql session.createQuery("delete User u where u.id=1").executeUpdate(); tr.commit(); } @Test public void testDeleteGroup(){ // testSaveGroup(); Session session = sf.getCurrentSession(); Transaction tr = session.beginTransaction(); Group g = (Group)session.load(Group.class, 1); //先结束关联关系 //user.setGroup(null); //session.delete(user); //也可以直接hql //session.createQuery("delete User u where u.id=1").executeUpdate(); //取出所有的user 并把之间的关系全部解除 //for(User user : g.getUsers()){ //user.setGroup(null); //} session.createQuery("delete Group g where g.id = 1").executeUpdate(); //session.delete(g); tr.commit(); } @Test public void testExport(){ new SchemaExport(new AnnotationConfiguration().configure()).create(false, true); } }
相关推荐
SpringMVC+Hibernate +MySql+ EasyUI实现CRUD
struts2与hibernate的整合实现数据的crud操作,还有复选框删除的实例,运用了Jquery的技术。 里面有使用需知,欢迎大家下载。
Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源
NULL 博文链接:https://cdxs2.iteye.com/blog/1934707
hibernate反向生成实体类及CRUD操作教学视频
学Java曾经遇到过crud的问题在网上找了半天资料都不是很详细,现在终于会了就把他们总结了一下,希望对everyboday 都有所帮助:
本例是用struts+HIbernate实现的增删改查(CRUD)可以更好的让大家了解s+h的使用(虽然一般都是SS或是HS的组合吧。。。。)
结合hibernate和struts2写的crud小demo
MyBatis 采用注解方式实现CRUD 参考博客:https://www.jianshu.com/p/74fbe5f1e610
myeclipse右键生成hibernate骨架,配置方式完成CRUD,用到JSON传值,分页跳转
NULL 博文链接:https://mvplee.iteye.com/blog/2186235
利用Hibernate编写的基本例程,完成基本的CRUD操作
SpringMVC+Spring+Hibernate+Oracle 实现图书管理(CRUD) 一个简单的图书管理系统。
Struts_Spring_Hibernate_CRUD操作案例_-分页查询
struts2.2.3-spring3.0.6-hibernate3.6.6 二、Demo功能(导入sql可直接运行) 0.数据库文件doc/db.sql 1.引入Spring全注解 2.抽取业务/持久层通用代码(UniversalService/UniversalDao),避免重复编写 比如有实体:...
* 使用映射配置文件实现CRUD操作 * 使用注解实现CRUD操作(简单介绍) 通过本项目示例为大家介绍两种Mybatis实现CRUD的操作 * 使用映射配置文件实现CRUD操作 * 使用注解实现CRUD操作(简单介绍) 通过本项目示例为大家...
该案例适合刚学完SSM的小伙伴,SSM整合使用最简单的方式实现了单表的CRUD操作。(数据库代码+源码)
HibernateCRUD HibernateCRUD 学习Hibernate技术。 ER图的简单CRUD:
带有分页,分页跳转,部门员工表的CRUD,hibernate注解方式操作实体,struts2动态方法调用
可以实现新闻发布的基本功能,但是相对简单一点,数据库自己建表就可以,代码中有相关的列