Hibernate学習のmany-to-many編
HibernateでのMany-to-Many編
Hibernateプロファイルのmany-to-many setフィールドのプロパティの説明:
ツールバーの
使用法
例を挙げる
name
マッピングのプロパティ
name="name"
table
マッピングされたデータベース・テーブル
name="Person_Orgnization"
lazy
ディレイロード
lazy=true|false
cascade
カスケード操作
cascade=all
inverse
関連付けは誰が維持しますか?
inverse=true
テーブル構造の関係:
Person(id)-->Person_Orgnization(pid,oid)-->Orgnization(id)
xmlファイル:
Person.hbm.xml
Orgnization.hbm.xml
JAVAコード:
Person.java
Orgnization.java
簡単なmany-to-manyの多対多の関連を実現しました
Hibernateプロファイルのmany-to-many setフィールドのプロパティの説明:
ツールバーの
使用法
例を挙げる
name
マッピングのプロパティ
name="name"
table
マッピングされたデータベース・テーブル
name="Person_Orgnization"
lazy
ディレイロード
lazy=true|false
cascade
カスケード操作
cascade=all
inverse
関連付けは誰が維持しますか?
inverse=true
テーブル構造の関係:
Person(id)-->Person_Orgnization(pid,oid)-->Orgnization(id)
xmlファイル:
Person.hbm.xml
<?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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class catalog="mysql" name="com.bintang.web.system.po.Person" table="person">
<id name="id" type="java.lang.Integer">
<column name="id"/>
<generator class="native"/>
</id>
<property generated="never" lazy="false" name="name" type="java.lang.String">
<column length="30" name="name"/>
</property>
<property generated="never" lazy="false" name="password" type="java.lang.String">
<column length="32" name="password"/>
</property>
<property generated="never" lazy="false" name="age" type="java.lang.Integer">
<column name="age"/>
</property>
<property generated="never" lazy="false" name="phone" type="java.lang.String">
<column length="15" name="phone"/>
</property>
<property generated="never" lazy="false" name="sex" type="java.lang.String">
<column length="1" name="sex"/>
</property>
<property generated="never" lazy="false" name="address" type="java.lang.String">
<column length="200" name="address"/>
</property>
<property generated="never" lazy="false" name="account" type="java.lang.String">
<column length="20" name="account"/>
</property>
<property generated="never" lazy="false" name="leader" type="java.lang.Integer">
<column name="leader"/>
</property>
<set name="orgs" table="Person_Orgnization">
<key column="pid"/>
<many-to-many class="com.bintang.web.system.po.Orgnization" column="oid"/>
</set>
</class>
</hibernate-mapping>
Orgnization.hbm.xml
<?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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class catalog="mysql" name="com.bintang.web.system.po.Orgnization" table="orgnization">
<id name="id" type="java.lang.Integer">
<column name="id"/>
<generator class="native"/>
</id>
<property generated="never" lazy="false" name="name" type="java.lang.String">
<column length="20" name="name"/>
</property>
<property generated="never" lazy="false" name="level" type="java.lang.Integer">
<column name="level"/>
</property>
<property generated="never" lazy="false" name="sn" type="java.lang.String">
<column length="100" name="sn"/>
</property>
<set name="Persons" table="person_orgnization">
<key column="oid"/>
<many-to-many class="com.bintang.web.system.po.Person" column="pid"/>
</set>
</class>
</hibernate-mapping>
JAVAコード:
Person.java
package com.bintang.web.system.po;
import java.util.HashSet;
import java.util.Set;
/**
* Person entity. @author MyEclipse Persistence Tools
*/
public class Person implements java.io.Serializable {
// Fields
private Integer id;
private String name;
private String password;
private Integer age;
private String phone;
private String sex;
private String address;
private String account;
private Integer leader;
private Set<Orgnization> orgs = new HashSet<Orgnization>();
// Constructors
/** default constructor */
public Person() {
}
/** full constructor */
public Person(String name, String password, Integer age, String phone,
String sex, String address, String account, Integer leader) {
this.name = name;
this.password = password;
this.age = age;
this.phone = phone;
this.sex = sex;
this.address = address;
this.account = account;
this.leader = leader;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return this.age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPhone() {
return this.phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return this.address;
}
public void setAddress(String address) {
this.address = address;
}
public String getAccount() {
return this.account;
}
public void setAccount(String account) {
this.account = account;
}
public Integer getLeader() {
return this.leader;
}
public void setLeader(Integer leader) {
this.leader = leader;
}
public Set getOrgs() {
return orgs;
}
public void setOrgs(Set orgs) {
this.orgs = orgs;
}
}
Orgnization.java
package com.bintang.web.system.po;
import java.util.HashSet;
import java.util.Set;
/**
* Orgnization entity. @author MyEclipse Persistence Tools
*/
public class Orgnization implements java.io.Serializable {
// Fields
private Integer id;
private String name;
private Integer level;
private String sn;
private Set<Person> persons = new HashSet<Person>();
// Constructors
/** default constructor */
public Orgnization() {
}
/** full constructor */
public Orgnization(String name, Integer level, String sn) {
this.name = name;
this.level = level;
this.sn = sn;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Integer getLevel() {
return this.level;
}
public void setLevel(Integer level) {
this.level = level;
}
public String getSn() {
return this.sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public Set<Person> getPersons() {
return persons;
}
public void setPersons(Set<Person> persons) {
this.persons = persons;
}
}
簡単なmany-to-manyの多対多の関連を実現しました