Hibernate连表查询

这篇博客介绍了如何使用Hibernate框架进行连表查询,包括配置文件设置、实体类定义、映射文件编写以及测试HQL查询语句。通过示例展示了查询员工和对应部门信息的过程。
摘要由CSDN通过智能技术生成

1.整体架构

 

 

2.所需要的jar包

 

 

3.hibernate.cfg.xml文件

 

<?xml version='1.0' encoding='utf-8'?>


<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">


<hibernate-configuration>


    <session-factory>


        <!-- Database connection settings -->
        <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="connection.username">jack</property>
        <property name="connection.password">8888</property>


      <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>

<mapping resource="com/entity/Emp.hbm.xml"/>
<mapping resource="com/entity/Dept.hbm.xml"/>
    </session-factory>

 

</hibernate-configuration>

 

4.实体类Emp和Dept

 

Emp实体类

package com.entity;


import java.util.Date;


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name="emp")
public class Emp {


private Integer empid;
private String ename;
private String job;
private Date hiredate;
private Double sal;
private Double comm;
private Integer deptid;


public Emp() {
super();
}


public Emp(String ename, Date hiredate, Double sal) {
super();
this.ename = ename;
this.hiredate = hiredate;
this.sal = sal;
}


public Emp(String ename, String job, Date hiredate, Double sal, Double comm, Integer deptid) {
super();
this.ename = ename;
this.job = job;
this.hiredate = hiredate;
this.sal = sal;
this.comm = comm;
this.deptid = deptid;
}


public Emp(Integer empid, String ename, String job, Date hiredate,

Hibernate 是一个开源的 Java 持久化框架,它可以简化数据库访问和操作。在 Hibernate 中,可以通过使用对象关系映射(ORM)的方式进行数据库查询,包括连表查询。 在 Hibernate 中,连表查询可以通过使用关联关系进行实现。Hibernate 提供了多种类型的关联关系,如一对一、一对多、多对一和多对多。这些关联关系可以在实体类之间建立映射关系,从而实现连表查询。 下面是一个示例,演示如何使用 Hibernate 进行连表查询: 假设有两个实体类:Order(订单)和Product(产品),它们之间存在多对一的关联关系。 ```java @Entity @Table(name = "orders") public class Order { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn(name = "product_id") private Product product; // 其他属性和方法 } @Entity @Table(name = "products") public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // 其他属性和方法 } ``` 在上述示例中,Order 类中使用了 @ManyToOne 注解来建立与 Product 类的多对一关联关系。通过 @JoinColumn 注解指定了外键列的名称。 要进行连表查询,可以使用 Hibernate 的 Criteria 查询或 HQL(Hibernate Query Language)进行查询操作。以下是使用 Criteria 查询的示例代码: ```java Session session = sessionFactory.openSession(); CriteriaBuilder builder = session.getCriteriaBuilder(); CriteriaQuery<Order> query = builder.createQuery(Order.class); Root<Order> root = query.from(Order.class); root.fetch("product", JoinType.INNER); query.select(root) .where(builder.equal(root.get("id"), orderId)); List<Order> orders = session.createQuery(query).getResultList(); ``` 上述示例中,通过 CriteriaQuery 的 fetch 方法来实现连表查询。在 fetch 方法中指定了需要关联查询的属性(这里是 "product"),并指定了关联类型(这里是 INNER)。 以上是一个简单的 Hibernate 连表查询示例,实际应用中,根据具体的业务需求和数据模型,连表查询的方式可能会有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值