1.<many-to-one>会在多的一端添加一个外键,指向一的一端,这个外键是由<many-to-one>中的column属性定义的,如果忽略这个属性,默认创建的外键与实体类的属性名相同。
2.cascade是级联对象,是对象之间的连锁操作,指明哪些操作会从父对象级联到关联的对象。
例子:
a.情况一:插入
public void testMany2One1(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
Group g=new Group();//组类(一个具体的组)
g.setName("hiberante");
User user=new User();
user.setCreateDate(new Date());
user.setExpireDate(new Date());
user.setGroup(g);
user.setName("fy");
user.setPassword("20041223");
session.save(user);
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.close(session);
}
}
插入是必须设置cascade。
b.情况二:查询
public void testMany2One2(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
User user=(User)session.load(User.class, 4);
System.out.println("-------name-----"+user.getName());
System.out.println("-------group--"+user.getGroup().getName());
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.close(session);
}
}
查询时可以不设置cascade。
即:cascade只对增删改起作用。