博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Hibernate] - Fetching strategies
阅读量:5924 次
发布时间:2019-06-19

本文共 1664 字,大约阅读时间需要 5 分钟。

Hibernate中的抓取策略,参考文档:


 

如下代码:

@SuppressWarnings({ "unchecked" })    public static void main(String[] args) {        Session session = HibernateUtil.getSessionFactory().openSession();        Transaction tx = session.beginTransaction();        try {            // ----------------------------------------------------            // Left join            // ----------------------------------------------------            String hql = "SELECT U FROM User U LEFT JOIN FETCH U.cards C WHERE U.userName=:userName AND C.cardID=:cardID";            Query query = session.createQuery(hql);            query.setLong("cardID", 1);            query.setString("userName", "Robin");            List
users = query.list(); for (User user : users) { System.out.println("User ID:" + user.getUserID() + "\tUser name:" + user.getUserName()); } Set
cards = users.get(0).getCards(); for(UserCard card : cards){ System.out.println("Card:" + card.getCardName()); } tx.commit(); } catch (Exception e) { tx.rollback(); e.printStackTrace(); } session.close(); }

 

代码中的红字“FETCH”,如果不加上,那么在之后的cards中,将会把用户的所有cards查询出来。这是在数据库中多加了一次SQL提交查询,没有cardID的条件。

 

此时将看到有两个Card打印出来。

 

如果加上FETCH,那么数据将会加入到缓存当中,当再次调用user的getCards()时,不会再提交SQL查询数据库。

此时将只有一个Card打印出来。

 

使用Hibernate的Criteria的Fetch方法,参考:

User user = (User) session.createCriteria(User.class)                .setFetchMode("permissions", FetchMode.JOIN)                .add( Restrictions.idEq(userId) )                .uniqueResult();

 

转载地址:http://tmxvx.baihongyu.com/

你可能感兴趣的文章
Search in Rotated Sorted Array ||
查看>>
NUC_HomeWork1 -- POJ2067(最短路)
查看>>
卸载mysql
查看>>
二叉树的遍历
查看>>
The Distinguish of the share or static lib in MFC
查看>>
如何导出数据库的数据词典
查看>>
linux下内存释放问题
查看>>
让Java和JavaScript进行交互
查看>>
android 上传文件
查看>>
linux逻辑卷管理
查看>>
java结合testng,利用mysql数据库做数据源的数据驱动实例
查看>>
LINQ之路12:LINQ Operators之数据转换(Projecting)
查看>>
SQL Server:数据库角色
查看>>
多标签主界面使用TRzPageControl
查看>>
对技术的态度—CoolShell 陈皓
查看>>
分享8个超棒的基于HTML5和jQuery的开发教程
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
Http 请求处理流程
查看>>
Linux硬盘速度测试的命令
查看>>
Win10 功能大全
查看>>