1Entity's relation
1.1One to One
一个对象的一个实例对应另一个对象的一个实例从数据库角度描述,一个表中的一条记录对应另外一个表中唯一一条记录
public class Image{
private Long id;
private String imgName;
private Blog value; //to store binary of image
......
}
Image.hbm.xml
public class Product{
private Long id;
private String name;
private double price;
private Image photo;
}
1.2Many to One
一个对象对应另一个对象的多个实例,从数据库角度描述,是在一个数据表中的一条记录对应另外一个数据表中对条记录.
public class PersonalCompute{
private Long computerId;
private String cpu;
......
private Programmer owner;
}
1.3One to Many
The same example as Many to One.But we stand at Programmer class's view point.
public class Programmer{
...
private Set computers = new HashSet();
}
2Collection
2.1Map
...
showcase:
Team team1 = new Team();
team1.setName(xx);
team1.getMembers.put("index","content");
......
sess.save...
2.1.1many-to-any
2.1.2One to many
单单使用Map做存储往往无法表达复杂的对象,如果要讲对象map进行映射:
One Team,multi-members
Public class Member{
...
private Team team;
}
...
showcase:
Team team = new Team();
team.setName("xx");
Member mem1 = new Member();
mem1.setXX
mem1.setXX
Member mem2 = new Member();
mem2.setXX
mem2.setXX
team.getMembers().put("xx",mem1);
team.getMembers().put("xx2",mem2);
2.1.3many to many
teamRole is their common key of Map.
Team
id
name
2
team2
Member
di
name
age
1
davy
23
memberAtTeams
member
team
teamRole
1
2
coach
teamHasMembers
team
member
teamRole
2
1
coach
2.1.4Composite-index
复杂Index可以是一个类。public class Position{
private String role;
private String scene;
public Position()....
getter...
setter...
}
...
index-many-to-one
index-many-to-many
index-many-to-any
2.1.5composite-element
2.2Set
<..>
2.2.1one-to-many
2.2.2many-to-many
2.2.3many-to-any
2.2.4composite-element
2.3List
2.3.1one-to-many
2.3.2many-to-many
2.3.3many-to-many
2.3.4composite-element
2.4Bag
It can contains JDK's Collection and List interface type's object.
2.5idBag
与bag相比多出了collection-id属性
2.6array
public class Team{
//...
private String[] members;
}
3Component
Public class Country{
//..
private Position position;
}
3.1One-to-one
3.2many-to-one
3.3dynamic-component
4Dynamic class
4.1One-to-one
4.2many-to-one
5Mapping type
5.1Java type to SQL type
5.23.0 enmu
5.3user defined data type
need implements org.hibernate.usertype.CompositeUserType or org.hibernate.usertype.UserType interface.
6Class Hierarchy's mapping
6.1Subclasses are saved in on Table
6.1.1discriminator
Sapmle:
Class AbstractParent{
String id;
/*important*/
String discriminator
}
Class ChildA{
String childA;
}
Class ChildB{
String childB;
}
=========DB=========
colum name
data type
memo
id
varchar
childA
varchar
childB
varchar
class_type
varchar
used to identify subclass:A B
========mapping config file====
id generator
·increment
·identity
·sequence
·hilo
·seqhilo
·uuid
·guid
·native
·assigned
·foreign
composite id
6.2Subclasses are saved in separated Table
并不为父类Container建立映射文件Box与Bottle的映射文件也如没有关系一样普通的建立但是对Container取得操作List pcs = sess.createQuery("from com.be.david.Container").list();
if(!cs.isEmpty()){
...
}会将Box与Container数据都取出来这是Hibernate默认隐式完成的
6.3Parent Class and Subclasses are saved in separated Table
6.4One PO multi-table
public Class Person{public String id;public String name;public String sex;public String address;public String city;public String zipcode;}
we wanna save address related attributes(blue ones).Use join
...
6.5Class A Class B not inherited from Parent Class
6.5.1subselect
We can use subselctto make ChildA and ChildB standalone.So how can we get all data including ChindA and ChildB?
select * from ChildAunionselect * from ChildB
posted on 2006-02-22 20:14 Vincent.Chen 阅读(399) 评论(0) 编辑 收藏 所属分类: Hibernate