用HQL从Oracle中获取数据(hql取oracle数据)

用HQL从Oracle中获取数据

Hibernate Query Language(HQL)是Hibernate提供的面向对象的查询语言,用于在Hibernate中进行CRUD操作的高级语言。本文将介绍如何使用HQL从Oracle数据库中获取数据。

第一步:配置Hibernate

在项目中使用HQL之前,需要先配置好Hibernate。可以在项目的pom.xml文件中加入以下依赖:


org.hibernate
hibernate-core
5.4.10.Final


org.hibernate
hibernate-entitymanager
5.4.10.Final


org.hibernate
hibernate-c3p0
5.4.10.Final


com.oracle.database.jdbc
ojdbc8
19.3.0.0

这里使用了Hibernate的core、entitymanager和c3p0依赖,并且使用了Oracle数据库的ojdbc8依赖。

然后在项目中配置Hibernate的SessionFactory,这里提供一个示例:

@Configuration
public class HibernateConfig {

@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(new String[] { "com.example.demo.model" });
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}

@Bean
public DataSource dataSource() {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:XE");
dataSource.setUser("username");
dataSource.setPassword("password");
return dataSource;
}

Properties hibernateProperties() {
return new Properties() {
{
setProperty("hibernate.hbm2ddl.auto", "update");
setProperty("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
setProperty("hibernate.show_sql", "true");
}
};
}
}

这里的配置中,配置了Oracle数据库的连接信息和Hibernate的常用属性。

第二步:创建实体类

在获取数据之前,需要先创建实体类。这里假设有一个名为“Person”的实体类,包含属性id、name和age:

@Entity
@Table(name = "person")
public class Person {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "name")
private String name;

@Column(name = "age")
private Integer age;

//省略getter和setter方法
}

第三步:获取数据

使用HQL获取数据非常简单,只需要在代码中使用SessionFactory获取Hibernate的Session对象,然后使用HQL进行查询即可。下面是一个示例代码:

public List getPersons() {
Session session = sessionFactory.getCurrentSession();
String hql = "FROM Person";
Query query = session.createQuery(hql);
List persons = query.list();
return persons;
}

这里使用了Session的createQuery()方法创建了一个Query对象,并传入了HQL语句。然后调用Query对象的list()方法即可获取查询结果。

除了基本的HQL查询,还可以使用HQL的其他高级查询语法,比如分页查询、分组查询等等。下面是一个分组查询的示例代码:

public List getAgeCount() {
Session session = sessionFactory.getCurrentSession();
String hql = "SELECT p.age, COUNT(*) FROM Person p GROUP BY p.age";
Query query = session.createQuery(hql);
List results = query.list();
return results;
}

这里的HQL语句中使用了GROUP BY子句和COUNT聚合函数,可以统计每个年龄段的人数。

总结:

本文介绍了如何使用HQL从Oracle数据库中获取数据。首先配置Hibernate,然后创建实体类,最后使用Session和Query对象进行HQL查询即可。HQL具有非常丰富的查询语法,开发人员可以根据实际需求进行灵活选择。


数据运维技术 » 用HQL从Oracle中获取数据(hql取oracle数据)