Session.load()/get()
方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。
其区别在于:
如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。
load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。
上面是看别人写的,我自己觉得
get()主要用于数据库有可能存在,也有可能不存在的时候,需要从数据库取出数据的时候。
load()主要用于可以肯定数据库中有这一条记录的时候,从数据库中去除这条数据。
下面两个例子,第一个是通过订单号得到订单这个实体类对象,第二个是通过订单号,从数据库中删除这条数据。
1 2 3 4 5 6 7 8 9 10 11
| public Order getOrder(int orderid) { Session session = sessionFactory.getCurrentSession(); Order order = null; try { order = (Order) session.get(Order.class, orderid); } catch (RuntimeException e) { throw e; } return order; }
|
1 2 3 4 5 6 7 8 9 10 11
| public int deleteOrder(int orderId) { trueSession session = sessionFactory.getCurrentSession(); truetry { truetrueOrder order = (Order) session.load(Order.class, orderId); truetruesession.delete(order); true} catch (Exception e) { truetruereturn -1; true} truereturn 0; }
|
参见http://blog.csdn.net/zhaoshl_368/article/details/6577103