hibernate--多对一(一对多)单向外键关联

来源:互联网 发布:c 程序员 编辑:程序博客网 时间:2024/06/07 04:07

-------------------------------------------------------------------------

多对一

一、通过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;@Idpublic 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@GeneratedValuepublic 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@GeneratedValuepublic 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@GeneratedValuepublic 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"为被控方


阅读全文
0 0
原创粉丝点击