-------------------------------------------------------------------------
多对一
一、通过annotation注解:
Group.java:
package com.bean; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="t_group") public class Group { private int id; private String name; @Id public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } User.java: package com.bean; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name="t_user") public class User { private int id; private String name; private Group group; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToOne @JoinColumn(name="groupId") public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } } cfg.xml配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/user</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="current_session_context_class">thread</property> <mapping class="com.bean.Group"/> <mapping class="com.bean.User"/> <!-- <mapping resource="com/bean/Husband.hbm.xml"/>--> </session-factory> </hibernate-configuration> 二、通过XML配置:User.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name = "com.bean.User" table = "t_user" > <id name = "id" column="id"> <generator class="native"/> </id> <property name="name" /> <many-to-one name="group" column="groupId"/> </class> </hibernate-mapping> Group.hbm.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name = "com.bean.Group" table = "t_group" > <id name = "id" column="id"> <generator class="native"/> </id> <property name="name" /> </class> </hibernate-mapping> cfg.xml文件中修改映射配置: <mapping resource="com/bean/User.hbm.xml"/> <mapping resource="com/bean/Group.hbm.xml"/>----------------------------------------------------------------------------------------------------------------
一对多
一:annotation注解:
Group.java:
package com.bean; import java.util.HashSet; import java.util.Set; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(name="t_group") public class Group { private int id; private String name; private Set<User> users = new HashSet<User>(); @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToMany @JoinColumn(name="groupId") public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } } User.java: package com.bean; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(name="t_user") public class User { private int id; private String name; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 二:XML配置:Group.hbm.xml配置:
<set name="users"> <key column="groupId"></key> <one-to-many class="com.bean.User2"/> </set>-------------------------------------------------------------------------------------------
一对多双向关联和多对一双向关联是没有区别的,通常说成一对多双向关联。将一对多和多对一单向关联综合起来就是一对多双向关联。
在映射一对多的双向关联关系时,应该在“one”方把<set>元素的inverse属性设为true,这样可以提高应用的性能。inverse="false" 为主控方,inverse="true"为被控方