xml代码
在JPA中双向一对多关系则多方为关系护端即负责外键记录的更新,一方为被维护端即没有权力更新外键记录
src下在面的META-INF/persistence.xml配置如下:
订单和订单项两个实例实体Bean如下:
订单表:
订单项表:
测试:
1、hibernate是双向的,通过one可以找到many,通过many可以找到one,
要想找到对方,必须将对方作为当前对象属性,在one这边
应当有一个Set属性装载多many对象,在many这边应当有一个
属性装载一个One对象。
public class customer
{
private Set buies;
private String customerName;
public void setBuies(Set buies)
{
this.buies=buies;
}
public Set getBuies()
{
return this.buies;
}
}
public class Buy
{
private Integer buyID;
private Customer customer;
public void setCustomer(Customer customer)
{
this.customer=customer;
}
public Customer getCustomer()
{
return this.customer;
}
}
2、主控方:维护外键列的值。
1、inverse="false"代表是主控方,另一方便是被控方,
反之inverse="true"代表是被控方,另一方便是主控方。
要想维护外键的值,必须将被控方作为主控方的属性。
一般主控方要many这边,不在one那边。
3、延迟加载:
1、lazy="true"代表是延迟加载,加载时只加载当前对象的,
不加载其关联对象的值,只有取关联对象的值时才执行sql
加载对方。
2、lazy="false"代表即时加载,加载时不但加载当前对象的,
还加载其关联的所有对象信息。
4、级联处理:主增从增、主删从删、从改从改,要做到该功能,必须将
从作为主的一个属性或主集合属性中的一个元素。
1、cascade="all" 代表级联insert、update、delete操作
2、cascade="save-update" 代表级联insert、update操作
主键的生成方式:
1、必须手动给定主键值
assigned
2、用户及hibernate都不管由数据库生,如identity
native
1、html:select标签
2、过滤器
1、filter
2、RequestProcessor