Hibernate_数据库多对多关联(实例)

项目结构:

数据库 课程--学生对应表

 

实体类----之贴出对应属性

Student.java

public class Student {
	private int id;
	private String name;
	private int age;
	private Set<Course> course;
}

Course.java

public class Course {
	private int id;
	private String name;
	private Set<Student> stu;
}


Hibernate.cfg.xml

 

<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
<session-factory>
	<property name="myeclipse.connection.profile">mysqlTest</property>
	<property name="connection.url">
		jdbc:mysql://10.2.11.6:3306/yyj001
	</property>
	<property name="connection.username">root</property>
	<property name="connection.password">123456</property>
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>
	<property name="dialect">
		org.hibernate.dialect.MySQLDialect
	</property>
	<property name="show_sql">true</property>
	<property name="format_sql">true</property>
	<mapping resource="com/yns/pojo/Course.hbm.xml" />
	<mapping resource="com/yns/pojo/Student.hbm.xml" />
</session-factory>
</hibernate-configuration></span>
Student.hbm.xml

<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
  <class name="com.yns.pojo.Course" table="course">
    <id name="id">
      <generator class="native"></generator>
     </id>
     <property name="name"></property>
     <set name="stu"  table="sc">
       <key column="cid"></key>
       <many-to-many  class="com.yns.pojo.Student" column="sid"></many-to-many>
     </set>
  </class>
</hibernate-mapping></span>
Course.hbm.xml

<span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
	<class name="com.yns.pojo.Student" table="student">
		<id name="id" column="sid">
			<generator class="native"></generator>
		</id>
		<property name="name"></property>
		<property name="age"></property>
		<set name="course" table="sc">
			<key column="sid"></key>
			<many-to-many class="com.yns.pojo.Course" column="cid"></many-to-many>
		</set>
	</class>
</hibernate-mapping></span>
TestMain.java

<span style="font-size:14px;">public class TestMain {
	
	public static void main(String[] args) {
		Configuration configuration = new Configuration().configure();
		SessionFactory sessionFactory = configuration.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		Query query = session.createQuery("from Course");
		List<Course> list = query.list();
		transaction.commit();
		
		for(Course cc:list){
			System.out.println(cc);
			for(Student stu:cc.getStu()){
				System.out.println(stu);
			}
		}
		
	}

}</span>
 输出结果--->
Hibernate:
    select
        course0_.id as id0_,
        course0_.name as name0_
    from
        course course0_
Course [id=1, name=java]
Hibernate:
    select
        stu0_.cid as cid1_,
        stu0_.sid as sid1_,
        student1_.sid as sid2_0_,
        student1_.name as name2_0_,
        student1_.age as age2_0_
    from
        sc stu0_
    left outer join
        student student1_
            on stu0_.sid=student1_.sid
    where
        stu0_.cid=?
Student [id=1, name=aa, age=23]
Student [id=2, name=bb, age=18]
Course [id=2, name=android]

Hibernate:
    select
        stu0_.cid as cid1_,
        stu0_.sid as sid1_,
        student1_.sid as sid2_0_,
        student1_.name as name2_0_,
        student1_.age as age2_0_
    from
        sc stu0_
    left outer join
        student student1_
            on stu0_.sid=student1_.sid
    where
        stu0_.cid=?
Student [id=1, name=aa, age=23]
Student [id=3, name=cc, age=13]

PS:源码下载:点我下载源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值