读书人

Hibernate备忘录-五

发布时间: 2012-09-06 10:37:01 作者: rapoo

Hibernate备忘录-5

1.

///*不再:user.setGroup(group);*/////需要对User的group做如下设置////@ManyToOne(cascade={CascadeType.ALL})////cascade={CascadeType.ALL})可以把user关联的transparent对象:group保存进入

?

?

2.

/*在获取多方的时候,是否获得1方的数据,答案是肯定的 *一般我们获得一个用户的时候都会想得到它的组  **////*@ManyToOne(cascade={CascadeType.ALL})// * ManyToOne 无论你是否设置cascade={CascadeType.ALL}// * 它默认都会帮你把1的那方取出来// * *//*在获取1方的时候,是否获得多方的数据,答案是否定的 *一般我们获取一个组的信息时不会获得这个组的所有用户的信息出来 **///测试getSession session2=HibernateSessionFactory.getSession();Transaction transaction2=session2.beginTransaction();//默认不取多方的数据Group g=(Group)session2.get(Group.class, 1);//当加上了fetch=FetchType.EAGER后,会取多方(user)的数据transaction2.commit();session2.close();@OneToMany(mappedBy="group",cascade={CascadeType.ALL},fetch=FetchType.EAGER)//cascade只对del,update,create有效//对于获取,用fetch

?

3.

?

 @OneToMany(   mappedBy = "group"   , cascade = { CascadeType.ALL }   , fetch = FetchType.LAZY//默认值   ) //cascade只对del,update,create有效 //对于获取,用fetch

?

?

4.

@Entity@Table(name="tb_user")public class User implements Serializable{private int id;private String name;private Group group;@ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.LAZY)public Group getGroup() {return group;}当从多方获得一方的数据时,默认是FetchType.EAGER当从一方获得多方的数据时,默认是FetchType.LAZY其实这是比较符合现实情况的如上情况:fetch=FetchType.LAZY则SQL:Hibernate:     select        user0_.id as id1_0_,        user0_.group_id as group3_1_0_,        user0_.name as name1_0_     from        tb_user user0_     where        user0_.id=? fetch=FetchType.EAGER则SQL:Hibernate:     select        user0_.id as id1_1_,        user0_.group_id as group3_1_1_,        user0_.name as name1_1_,        group1_.id as id0_0_,        group1_.name as name0_0_     from        tb_user user0_     left outer join        tb_group group1_             on user0_.group_id=group1_.id     where        user0_.id=?

?

5.

当获得的数据需要排序才选择list,一般都是set

?

6.

读书人网 >软件架构设计

热点推荐