Hibernate 一对多注解 实例
来源:互联网 发布:太原知达常青藤高中部 编辑:程序博客网 时间:2024/05/21 15:45
student:
/** * */package com.wonders.task.sample.bo;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;/** * @ClassName: Student * @Description: TODO(这里用一句话描述这个类的作用) * @author zhoushun * @date 2014年2月27日 上午11:48:30 * */@Entity @Table(name="Z_STUDENT") public class Student {private String id;private String name;private Clazz clazz;@Id@GeneratedValue(generator="system-uuid")@GenericGenerator(name="system-uuid", strategy = "uuid")@Column(name = "ID")public String getId() {return id;}public void setId(String id) {this.id = id;}@Column(name = "NAME", length = 500)public String getName() {return name;}public void setName(String name) {this.name = name;}@ManyToOne(cascade={CascadeType.ALL}) @JoinColumn(name="class_id") //student类中对应外键的属性:classid public Clazz getClazz() {return clazz;}public void setClazz(Clazz clazz) {this.clazz = clazz;}}
classes:
/** * */package com.wonders.task.sample.bo;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;/** * @ClassName: Clazz * @Description: TODO(这里用一句话描述这个类的作用) * @author zhoushun * @date 2014年2月27日 上午11:48:47 * */@Entity @Table(name="Z_CLASS") public class Clazz implements java.io.Serializable{/** * */private static final long serialVersionUID = -6224738252966513441L;private String id;private String name;private Set<Student> set;@Id@GeneratedValue(generator="system-uuid")@GenericGenerator(name="system-uuid", strategy = "uuid")@Column(name = "ID")public String getId() {return id;}public void setId(String id) {this.id = id;}@Column(name = "NAME", length = 500)public String getName() {return name;}public void setName(String name) {this.name = name;}@OneToMany(cascade=CascadeType.ALL,mappedBy="clazz") //@OneToMany(cascade=CascadeType.ALL,mappedBy="clazz",fetch=FetchType.EAGER) 关闭延迟加载。 public Set<Student> getSet() {return set;}public void setSet(Set<Student> set) {this.set = set;}}
/** * */package com.wonders.task.sample.main;import java.util.HashSet;import java.util.Set;import javax.annotation.Resource;import org.hibernate.Hibernate;import org.hibernate.Session;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.Scope;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;import com.wonders.schedule.util.SpringBeanUtil;import com.wonders.task.sample.ITaskService;import com.wonders.task.sample.bo.Clazz;import com.wonders.task.sample.bo.Student;/** * @ClassName: TestMain * @Description: TODO(这里用一句话描述这个类的作用) * @author zhoushun * @date 2014年2月27日 下午12:18:44 * */@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)/* 功能模块入口点,beanid即数据库配置中的name */@Service("testMain")@Scope("prototype")public class TestMain {private HibernateTemplate hibernateTemplate;public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}//注入hibernateTemplate@Resource(name="hibernateTemplate")public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}public void test(){Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession();Clazz c2 = (Clazz) session.get(Clazz.class, "8a81a97c4471c661014471c669360002");//Clazz c2 = (Clazz) main.getHibernateTemplate().get(Clazz.class, "8a81a97c4471c661014471c669360002");Hibernate.initialize(c2.getSet());System.out.println("11111111111111111111111");//session.close();Set<Student> sss = c2.getSet();System.out.println("22222222222222222");for(Student s: sss){System.out.println(s.getName());}}public static void main(String[] args){ApplicationContext applicationContext = null; String[] fileUrl = new String[]{"classpath*:applicationContext*.xml"}; applicationContext = new ClassPathXmlApplicationContext(fileUrl); Student s1 = new Student();Student s2 = new Student();Clazz c1 = new Clazz();c1.setName("1班");s1.setName("z1");s1.setClazz(c1);s2.setName("z2");s2.setClazz(c1);Set<Student> set = new HashSet<Student>();set.add(s1);set.add(s2);c1.setSet(set);TestMain main = (TestMain)SpringBeanUtil.getBean("testMain");//main.getHibernateTemplate().save(c1);//Session session = main.getHibernateTemplate().getSessionFactory().openSession();//Clazz c2 = (Clazz) session.get(Clazz.class, "8a81a97c4471c661014471c669360002");////Clazz c2 = (Clazz) main.getHibernateTemplate().get(Clazz.class, "8a81a97c4471c661014471c669360002");//Hibernate.initialize(c2.getSet());////System.out.println("11111111111111111111111");//session.close();//Set<Student> sss = c2.getSet();//System.out.println("22222222222222222");//for(Student s: sss){////System.out.println(s.getName());//}main.test();//main.getHibernateTemplate().delete(c2);}}
级联保存
方法1:自动维护两表关系,mappedby 为被拥维护方,即对应的student为维护方
Student s1 = new Student();Student s2 = new Student();Clazz c1 = new Clazz();c1.setName("1班");s1.setName("z1");s1.setClazz(c1);s2.setName("z2");s2.setClazz(c1);TestMain main = (TestMain)SpringBeanUtil.getBean("testMain");main.getHibernateTemplate().save(s1);main.getHibernateTemplate().save(s2);
Student s1 = new Student();Student s2 = new Student();Clazz c1 = new Clazz();c1.setName("1班");s1.setName("z1");s1.setClazz(c1);s2.setName("z2");s2.setClazz(c1);Set<Student> set = new HashSet<Student>();set.add(s1);set.add(s2);c1.setSet(set);TestMain main = (TestMain)SpringBeanUtil.getBean("testMain");main.getHibernateTemplate().save(c1);
关于延迟加载:
http://blog.csdn.net/z69183787/article/details/20049409
http://blog.csdn.net/z69183787/article/details/17136627
http://blog.csdn.net/z69183787/article/details/8197106
http://blog.csdn.net/z69183787/article/details/18615577
1 0
- Hibernate 一对多注解 实例
- Hibernate 一对多注解 实例
- Hibernate一对多双向注解配置实例
- hibernate一对多注解开发实例
- hibernate 注解配置一对多关系简单实例
- hibernate 注解配置一对多关系简单实例
- hibernate一对多实例
- Hibernate一对多实例
- Hibernate 注解 实现一对多
- hibernate一对多双向注解
- hibernate注解一对多错误
- hibernate 一对多注解开发
- hibernate注解实现一对多
- Hibernate一对一注解,一对多注解
- 07-hibernate一对多实例
- HIBERNATE一对多配置实例
- hibernate注解方式实现一对多映射
- hibernate注解方式实现一对多映射
- gcc 指定头文件和库文件路径的方法
- Synopsys工具介绍
- Windows Vista平台IE7保护模式
- Linux内置的审计跟踪工具:last命令
- bash shell 下的环境变量
- Hibernate 一对多注解 实例
- Entity Framework DbContext对一个Entity 进行更新。
- win7系统中C盘空间缩水的有效处理方法
- java BIO NIO AIO 理论篇
- 如何理解const char*, char const*, char*const等
- 从MAC上生成pem文件用于推送
- Linux的系统性能监测参数获取方法介绍
- phpcms建站还是不错的,新站运行两周,效果显著
- Yii中CActiveRecord有relation的时候分页