一、一对多映射
1、在映射一对多的双相关联关系时,应该在one方把inverse属性设为true,可以提高应用的性能。
2、建立两个对象的双向关联时,应该同时修改关联两端的对象的应用属性,这样使程序更加健壮,提高业务逻辑层的独立性,使业务逻辑层的程序代码不受hibernate实现的影响;同理,当解除双相关联关系时,也应该修改关联两端的对象的相应属性。
eg://添加
customer.getOrders().add(order);
order.setCustomer(customer);
//删除
customer.getOrders().remove(order);
order.setCustomer(null);
3、在定义一对多映射中“一”的POJO类时,注意要private Set orders = new HashSet();//通常把它初始化为集合实现类的一个实例,这样避免访问取值为null,引发NullPointerException异常,提高健壮性。
二、Session三种检索方法:
1.load():根据给定OID从数据库中加载一个持久化对象,如数据库中没有则抛出net.sf.hibernate.ObjectNotFoundException异常。
2.get():根据给定OID从数据库中加载一个持久化对象,如数据库中没有则返回null。
3.find():按照参数指定的HQL语句加载一个或多个持久化对象,实际是HQL检索方式的一种简写形式。
三、hql查询:
在数组和Collection中的查询:
String hql = "select u from User u where u in (:users)";
query.setParameterList("users", users);
//括号千万别忘写,否则出现如下错误:
2006-07-07 11:07:35 WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: 907, SQLState: 42000
2006-07-07 11:07:35 ERROR [org.hibernate.util.JDBCExceptionReporter] - ORA-00907: 缺失右括号
posted on 2006-08-16 15:37
阿成 阅读(414)
评论(0) 编辑 收藏 所属分类:
Hibernate