博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate manytomany
阅读量:5901 次
发布时间:2019-06-19

本文共 4762 字,大约阅读时间需要 15 分钟。

1.建表

  create    table  student
(sid   varchar (  32 )   not    null    primary    key ,
 sname   varchar (  16 ),
 sage   varchar (  16 ),
)
  create    table  course
(cid   varchar (  32 )   not    null    primary    key ,
cname   varchar (  16 )
)
  create    table  student_course_link
(sid   varchar (  32 )   not    null ,
cid   varchar (  32 )   not    null ,
  primary    key (sid,cid)
)
2.写VO
StudentVO
package com.test;
import java.util.Set;
public  class Student
{
    private String sid;
    private String sname;
    private String sage;
    private Set course;
    public Student()
    {
    }
   //写上get set
Course vo
package com.test;
import java.util.Set;
public  class Course
{
    private String cid;
    private String cname;
    private Set student;
   //写上get set
写配置文件
Student.hbm.xml
<? xml version="1.0" ?>
<! DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
< hibernate-mapping >
     < class  name ="com.test.Student"  table ="student"   >
         < id  name ="sid"  type ="string"  unsaved-value ="null"   >
             < column  name ="sid"  sql-type ="char(32)"  not-null ="true" />
             < generator  class ="uuid.hex" />
         </ id >
         < property  name ="sname" >
             < column  name ="sname"  sql-type ="varchar(16)"  not-null ="true" />
         </ property >
         < property  name ="sage" >
             < column  name ="sage"  sql-type ="varchar(16)"  not-null ="true" />
         </ property >
         < set  name ="course"  table ="student_course_link"  cascade ="all"  outer-join ="false" >
             < key  column ="sid" />
             < many-to-many  class ="com.test.Course"  column ="cid" />
         </ set >
   
     </ class >
</ hibernate-mapping >
Course.hbm.xml
<? xml version="1.0" ?>
<! DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
< hibernate-mapping >
     < class  name ="com.test.Course"  table ="course"   >
         < id  name ="cid"  type ="string"  unsaved-value ="null"   >
             < column  name ="cid"  sql-type ="char(32)"  not-null ="true" />
             < generator  class ="uuid.hex" />
         </ id >
         < property  name ="cname" >
             < column  name ="cname"  sql-type ="varchar(16)"  not-null ="true" />
         </ property >
         < set  name ="student"  table ="student_course_link"  lazy ="false"  cascade ="all" >
             < key  column ="cid" />
             < many-to-many  class ="com.test.Student"  column ="sid" />
         </ set >
   
     </ class >
</ hibernate-mapping >
接着把下面的hibernate.properties文件拷到classes目录下。。这里用的是mysql
hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'
## MySQL
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class org.gjt.mm.mysql.Driver
hibernate.connection.url jdbc:mysql://localhost:3306/wjcms
hibernate.connection.username root
hibernate.connection.password wujun
hibernate.connection.pool_size 1
hibernate.proxool.pool_alias pool1
hibernate.show_sql true
hibernate.jdbc.batch_size 0
hibernate.max_fetch_depth 1
hibernate.cache.use_query_cache true 
写测试类了..
package com.test;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.*;
import java.util.Set;
import java.util.HashSet;
import java.sql.*;
import java.util.List;
import java.util.Iterator;
public  class TestManyToMany
{
    SessionFactory sf;
    Session session;
    public TestManyToMany()
    {
        try
        {
            Configuration cfg = new Configuration();
            sf = cfg.addClass(Student.class).addClass(Course.class).buildSessionFactory();
        }
        catch(HibernateException ex)
        {
            ex.printStackTrace();
        }
    }
    public void doCreate()
    {
        try
        {
            session = sf.openSession();
            Student student = new Student();
            student.setSname("小王");
            student.setSage("22");
            Set courseSet = new HashSet();
            Course course = null;
            for(int i=0;i<2;i++)
            {
                course = new Course();
                if(i==0)
                    course.setCname("c++");
                else if(i==1)
                    course.setCname("java");
                courseSet.add(course);
            }
            student.setCourse(courseSet);
            
            session.save(student);
            session.flush();
            session.connection().commit();
        }
        catch(HibernateException ex)
        {
            ex.printStackTrace();
        }
        catch(SQLException ex1)
        {
            ex1.printStackTrace();
        }
        finally
        {
                try{
                    session.close();
                }
                catch(HibernateException ex2){
                }
        }
    }
    public void doQuery()
    {
        try{
            session = sf.openSession();
            Query q = session.createQuery("select s from Student as s");
            List l = q.list();
            Student s = null;
            Course course = null;
            for(int i=0;i<l.size();i++)
            {
                s = (Student)l.get(i);
                System.out.println("姓名: "+s.getSname());
                System.out.println("年龄: "+s.getSage());
                System.out.println("所选的课程:");
                Iterator it = s.getCourse().iterator();
                while(it.hasNext())
                {
                    course = (Course)it.next();
                    System.out.println("课程名: "+course.getCname());
                }
            }
        }
        catch(HibernateException ex){
            ex.printStackTrace();
        }
        finally{
            try{
                session.close();
            }
            catch(HibernateException ex2){
            }
        }
    }
    public static void main(String[] args)
    {
        TestManyToMany t = new TestManyToMany();
        //t.doCreate();
        t.doQuery();
    }
}

 

好。。可以了。。

转载于:https://www.cnblogs.com/jerome-rong/archive/2012/05/31/2528656.html

你可能感兴趣的文章
Ruby中写一个判断成绩分类的脚本
查看>>
《从零开始学Swift》学习笔记(Day 40)——析构函数
查看>>
Exchange2003-2010迁移系列之十,Exchange证书攻略
查看>>
使用NTFS权限保护数据安全
查看>>
infortrend ESDS RAID6故障后的数据恢复方案
查看>>
【STM32 .Net MF开发板学习-23】DHT11温湿度传感器通信(下)
查看>>
extmail集群的邮件负载均衡方案 [lvs dns postfix]
查看>>
SCCM2012SP1---资产管理和远程管理
查看>>
Android Activity 之 startActivityForResult 的使用
查看>>
org.springframework.util 类 Assert的使用
查看>>
java提供类与cglib包实现动态代理
查看>>
flask上传多个文件,获取input中的数组
查看>>
更改UIView的背景
查看>>
JLNotebookView
查看>>
StackPanel
查看>>
SPUserResizableView
查看>>
UML类图示例
查看>>
sh ./ 执行区别
查看>>
宏定义(#ifndef+#define+#endif)的作用
查看>>
Prometheus安装部署以及配置
查看>>