隨筆 - 59  文章 - 70  trackbacks - 0
          <2009年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          積分與排名

          • 積分 - 173671
          • 排名 - 340

          最新評論

          閱讀排行榜

          評論排行榜

          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();
          ????}

          }

          posted on 2009-01-12 14:50 JasonChou 閱讀(1393) 評論(5)  編輯  收藏 所屬分類: j2ee

          FeedBack:
          # re: Hibernate多對多more-to-more實例 2009-05-15 01:22 啊龍
          先建好了表?????  回復  更多評論
            
          # re: Hibernate多對多more-to-more實例 2009-05-15 09:05 JasonChou
          @啊龍
          是啊 有何不妥?  回復  更多評論
            
          # re: Hibernate多對多more-to-more實例[未登錄] 2010-01-18 09:39 lq
          加上struts實現個增刪改查例子看看啦  回復  更多評論
            
          # re: Hibernate多對多more-to-more實例 2010-01-18 11:01 JasonChou
          @lq
          struts例子網上很多的,你再找找  回復  更多評論
            
          # re: Hibernate多對多more-to-more實例 2016-04-19 16:09 
          同是要求返回兩張表的字段,該如何查詢,如何確定返回類型  回復  更多評論
            
          主站蜘蛛池模板: 通榆县| 洪雅县| 姜堰市| 毕节市| 宣威市| 东乡| 昌吉市| 平定县| 巴青县| 巧家县| 萍乡市| 左权县| 田林县| 宜都市| 普陀区| 利辛县| 六枝特区| 乐平市| 循化| 雅安市| 海宁市| 武隆县| 淳化县| 鹿泉市| 抚顺县| 高安市| 广汉市| 普兰县| 苍南县| 霞浦县| 平塘县| 安龙县| 和硕县| 洛扎县| 大丰市| 云和县| 永嘉县| 轮台县| 长宁县| 凌海市| 弥渡县|