博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate5-一对多双向关联-迫切左外连接-HQL
阅读量:6446 次
发布时间:2019-06-23

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

1.创建项目,项目名称hibernatedemo19,目录结构如图所示

2.在项目中创建lib目录存储jar文件,目录结构如图所示

3.在src目录中创建实体Bean Forum,包名(com.mycompany.demo.bean),如图所示

4.实体Bean Forum的内容如下

package com.mycompany.demo.bean;import java.util.Set;public class Forum {	private int fid;	private String name;	private Set
 forumPosts; public int getFid() { return fid; } public void setFid(int fid) { this.fid = fid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set
 getForumPosts() { return forumPosts; } public void setForumPosts(Set
 forumPosts) { this.forumPosts = forumPosts; }}

5.在src目录中创建实体Bean Forum的映射文件Forum.hbm.xml,包名(com.mycompany.demo.bean),如图所示

6.映射文件Forum.hbm.xml的内容如下

 
   
      
         This class contains the forum detail.             
      
      
         
                  
      
            
      
      
         

7.在src目录中创建实体Bean ForumPost,包名(com.mycompany.demo.bean),如图所示

8.实体Bean ForumPost的内容如下

package com.mycompany.demo.bean;public class ForumPost {	private int pid;	private String subject;	private Forum forum;	public int getPid() {		return pid;	}	public void setPid(int pid) {		this.pid = pid;	}	public String getSubject() {		return subject;	}	public void setSubject(String subject) {		this.subject = subject;	}	public Forum getForum() {		return forum;	}	public void setForum(Forum forum) {		this.forum = forum;	}}

9.在src目录中创建实体Bean ForumPost的映射文件ForumPost.hbm.xml,包名(com.mycompany.demo.bean),如图所示

10.映射文件ForumPost.hbm.xml的内容如下

 
   
      
         This class contains the forumpost detail.             
      
      
         
                  
      
            
      
   

11.在src目录中创建工具类 HbnUtil,包名(com.mycompany.demo.util),如图所示

12.工具类 HbnUtil的内容如下

package com.mycompany.demo.util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HbnUtil {	private static SessionFactory sessionFactory;		public static Session getSession(){		if(sessionFactory == null || sessionFactory.isClosed()){			sessionFactory = new Configuration().configure().buildSessionFactory();		}				return sessionFactory.getCurrentSession();	}}

13.在src目录中创建Hibernate的配置文件hibernate.cfg.xml,如图所示

14.Hibernate的配置文件hibernate.cfg.xml的内容如下

   
   
   
org.hibernate.dialect.MySQLDialect    
   
com.mysql.jdbc.Driver    
   
jdbc:mysql://localhost:3306/test    
   
      root        
   
   
   
update    
   
true    
   
true    
   
thread           
   
   org.hibernate.c3p0.internal.C3P0ConnectionProvider     
   
   

15.在项目中创建test目录存储测试文件,文件名称TestApp,包名(com.mycompany.demo.bean),目录结构如图所示

16.TestApp测试类的内容如下

package com.mycompany.demo.bean;import java.util.HashSet;import java.util.List;import java.util.Set;import org.hibernate.Session;import org.junit.Before;import org.junit.Test;import com.mycompany.demo.util.HbnUtil;public class TestApp {		private Session session;		@Before	public void init(){		session = HbnUtil.getSession();	}		/*	 * 一对多双向关联-添加	 */	@Test	public void testOneToManyAdd(){		try {			session.beginTransaction();						ForumPost forumPost1 = new ForumPost();			forumPost1.setSubject("A");						ForumPost forumPost2 = new ForumPost();			forumPost2.setSubject("B");						Set
 forumPosts = new HashSet
(); forumPosts.add(forumPost1); forumPosts.add(forumPost2); Forum forum = new Forum(); forum.setName("foruma"); forum.setForumPosts(forumPosts); session.save(forum); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); e.printStackTrace(); } } /*  * 一对多双向关联-迫切左外连接-HQL  */ @Test public void testLeft(){ try { session.beginTransaction(); String hsql = "FROM Forum f LEFT OUTER JOIN FETCH f.forumPosts"; List
 list = session.createQuery(hsql).list(); for (Forum forum : list) { System.out.println(forum.getName()); } session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); e.printStackTrace(); } } /*  * 一对多双向关联-迫切左外连接-去重复-HQL  */ @Test public void testLeftFetch(){ try { session.beginTransaction(); String hsql = "SELECT distinct f FROM Forum f LEFT OUTER JOIN FETCH  f.forumPosts"; List
 list = session.createQuery(hsql).list(); for (Forum forum : list) { System.out.println(forum.getName()); } session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); e.printStackTrace(); } }}

本文转自 素颜猪 51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1912090

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

你可能感兴趣的文章
基于webpack4.x, babel7.x 搭建的多页面脚手架, 简化前端开发环境配置,开箱即用,专注于开发,不依赖三大框架...
查看>>
以太坊Token通证或者代币的作用
查看>>
lodash源码分析之isArguments
查看>>
在PPT动画中学算法之Delete Node in a Linked List
查看>>
SAP ERP和C4C Account和Contact的双向同步
查看>>
无服务器架构(Serverless Architectures)(上)
查看>>
vuex其实超简单,只需3步
查看>>
夯实Java:从面向对象说起
查看>>
Nginx 安装
查看>>
JavaScript模拟自由落体
查看>>
sonar使用指南
查看>>
Vue -- 动态渲染的数据在页面获取不到DOM元素
查看>>
「Do.007」Android实战项目(2)——使用Github进行版本管理
查看>>
Mysql on delete cascade 总结
查看>>
一句话概括
查看>>
js头像裁剪实现——canvas+Jcrop+jQuery
查看>>
作为php了解一下共享内存的概念及优缺点
查看>>
记一次在阿里云上创建VPC网络
查看>>
组件库构建过程
查看>>
页面缓存的操作(搜索历史记录),页面搜索功能实现
查看>>