Hibernate一对多双向关联

一种商品类别下有多个商品,多个商品对应同一个商品类别,这种关系就是一对多双向关联。

 

商品类:

package com.pojo; /** * Product entity. * * @author MyEclipse Persistence Tools */ public class Product implements java.io.Serializable { private static final long serialVersionUID = -7963752710605063544L; private int id; private String productname; private String remark; // 多对一 private Category category; public int getId() { return id; } public void setId(int id) { this.id = id; } public Category getCategory() { return category; } public void setCategory(Category category) { this.category = category; } public Product() { } public String getProductname() { return this.productname; } public void setProductname(String productname) { this.productname = productname; } public String getRemark() { return this.remark; } public void setRemark(String remark) { this.remark = remark; } }

 

商品类别:

package com.pojo; import java.util.HashSet; import java.util.Set; /** * Category entity. * * @author MyEclipse Persistence Tools */ public class Category implements java.io.Serializable { private static final long serialVersionUID = -666185106951167028L; private int id; private String name; private String mark; // 集合,一对多 private Set products = new HashSet(); public int getId() { return id; } public void setId(int id) { this.id = id; } public Set getProducts() { return products; } public void setProducts(Set products) { this.products = products; } public Category() { } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getMark() { return this.mark; } public void setMark(String mark) { this.mark = mark; } }

 

XML配置文件,一对多的关系:

 

多个商品对应一个商品类别:

 

 

 

测试类:

 

package com.test; import java.util.List; import java.util.Set; import org.hibernate.Session; import com.pojo.Category; import com.pojo.Product; import com.util.HibernateManager; public class Test1 { /** * beckham Dec 14, 2009 7:30:06 PM */ public static void main(String[] args) { Test1.delete(); } public static void addType() { Session session = HibernateManager.openSession(); Category c = new Category(); c.setName("电脑"); c.setMark("这是电脑类别"); try { session.save(c); HibernateManager.closeSession(); } catch (Exception e) { e.printStackTrace(); HibernateManager.rollbackTransaction(); } } public static void addPro() { Session session = HibernateManager.openSession(); // 获取类型 Category c = (Category) session.load(Category.class, new Integer(1)); // 商品1 Product p = new Product(); p.setProductname("摩托罗拉v8"); p.setRemark("很好的手机"); // 商品2 Product p1 = new Product(); p1.setProductname("摩托罗拉A1200"); p1.setRemark("非常好的手机"); // 一对多关联 Set set = c.getProducts(); set.add(p); set.add(p1); // 直接保存商品类别,商品自动级联就保存 session.save(c); try { HibernateManager.closeSession(); } catch (Exception e) { e.printStackTrace(); HibernateManager.rollbackTransaction(); } } public static void loadPro() { Session session = HibernateManager.openSession(); Product p = (Product) session.load(Product.class, new Integer(1)); System.out.println("类别编号:" + p.getCategory().getId()); System.out.println("类别名称:" + p.getCategory().getName()); System.out.println("类别描述:" + p.getCategory().getMark()); System.out.println("商品编号" + p.getId()); System.out.println("商品名称:" + p.getProductname()); System.out.println("商品描述:" + p.getRemark()); try { HibernateManager.closeSession(); } catch (Exception e) { e.printStackTrace(); HibernateManager.rollbackTransaction(); } } @SuppressWarnings("unchecked") public static void loadProList() { Session session = HibernateManager.openSession(); // 先获取类型 List list = session.createQuery("from Product").list(); for (Product p : list) { System.out.println("类别编号:" + p.getCategory().getId()); System.out.println("类别名称:" + p.getCategory().getName()); System.out.println("类别描述:" + p.getCategory().getMark()); System.out.println("商品编号" + p.getId()); System.out.println("商品名称:" + p.getProductname()); System.out.println("商品描述:" + p.getRemark()); System.out.println("
"); } try { HibernateManager.closeSession(); } catch (Exception e) { e.printStackTrace(); HibernateManager.rollbackTransaction(); } } // 修改商品类型,级联操作 public static void updateCate() { Session session = HibernateManager.openSession(); Category c = (Category) session.load(Category.class, new Integer(1)); Set products = c.getProducts(); for (Product p : products) { if (p.getId() == 1) { p.setProductname("诺基亚6300"); p.setRemark("very good"); } } session.update(c); try { HibernateManager.closeSession(); } catch (Exception e) { e.printStackTrace(); HibernateManager.rollbackTransaction(); } } // 修改商品类型,级联操作 public static void updatePro() { Session session = HibernateManager.openSession(); Product p = (Product) session.load(Product.class, new Integer(1)); Category c = p.getCategory(); p.setProductname("三星"); p.setRemark("很实用的手机"); session.update(c); try { HibernateManager.closeSession(); } catch (Exception e) { e.printStackTrace(); HibernateManager.rollbackTransaction(); } } // 删除某一类别,并级联删除该类别下面的所有商品 public static void delete() { Session session = HibernateManager.openSession(); Category c = (Category) session.load(Category.class, new Integer(1)); //级联删除 session.delete(c); try { HibernateManager.closeSession(); } catch (Exception e) { e.printStackTrace(); HibernateManager.rollbackTransaction(); } } }

你可能感兴趣的:(Hibernate)