`
零度弥合
  • 浏览: 20637 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

J2EE之路(六)hibernate(02)HQL和criteria

 
阅读更多

引言,hibernate的get方法,只能利用主键查询,所以需要HQL完成复杂查询

 

SQL查的是表,而HSQL查询的事对象

 

Query q = session.createQuery(HQL);

from Person

from User user where user.name = :name

from User user where user.name = :name and user.birday < :birday

例子:

static void query01(String name){
		Session s = null;
		try{
			s = HibernateUtil.getSession();
			String hql01 = "from User as user where user.name=?";
			Query query = s.createQuery(hql01);
			query.setString(0,name);
			List<User> userList = query.list();
			
			for(User userItem:userList){
				System.out.println(userItem.getName());
			}
		}finally{
			if(s!=null)
				s.close();
		}
	}

 

与jdbc的却别是HQL没有select,而且当setString时是从零开始的,取值的方法也有些诡异是query.list();

 

Criteria

Criteria是一种更面相对象的查询方式,criteria的查询方式

 

static void cri(String name){
		Session s = null;
		try{
			s = HibernateUtil.getSession();
			Criteria c = s.createCriteria(User.class);
			c.add(Restrictions.eq("name", name));//加入一个约束条件
			List<User> userList = c.list();
			
			for(User userItem:userList){
				System.out.println(userItem.getName());
			}
		}finally{
			if(s!=null)
				s.close();
		}
	}

 

 怀着激动的心情,使用阔别4年的hibernte完成CRUD。

 

 

package dao;

import domain.User;

public interface UserDao {
	public void saveUser(User user);
	public void removeUser(User user);
	public void updateUser(User user);
	public User getUserById(int id);
	public User getUserByName(String name);
}

  

 

package dao.impl;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import Util.HibernateUtils;

import dao.UserDao;
import domain.User;

public class UserDaoHibernateImpl implements UserDao {

	@Override
	public void saveUser(User user) {
		Session session = null;
		Transaction transaction = null;
		try{
			session = HibernateUtils.getSession();
			transaction = session.beginTransaction();
			session.save(user);
			transaction.commit();
		}catch(Exception e){
			e.printStackTrace();
			transaction.rollback();
		}finally{
			session.close();
		}
	}

	@Override
	public void removeUser(User user) {
		Session session = null;
		Transaction transaction = null;
		try{
			session = HibernateUtils.getSession();
			transaction = session.beginTransaction();
			session.delete(user);
			transaction.commit();
		}catch(Exception e){
			e.printStackTrace();
			transaction.rollback();
		}finally{
			session.close();
		}
	}

	@Override
	public void updateUser(User user) {
		Session session = null;
		Transaction transaction = null;
		try{
			session = HibernateUtils.getSession();
			transaction = session.beginTransaction();
			session.update(user);
			transaction.commit();
		}catch(Exception e){
			e.printStackTrace();
			transaction.rollback();
		}finally{
			session.close();
		}
	}

	@Override
	public User getUserById(int id) {
		Session session = null;
		try{
			session = HibernateUtils.getSession();
			User user = (User)session.get(User.class, id);
			return user;
		}finally{
			session.close();
		}
	}

	@Override
	public User getUserByName(String name) {
		Session session = null;
		try{
			session = HibernateUtils.getSession();
			Criteria criteria = session.createCriteria(User.class);
			criteria.add(Restrictions.eq("name","test05"));
			User user = (User)criteria.uniqueResult();
			return user;
		}finally{
			session.close();
		}
	}

}

 

package domain;

import java.util.Date;

public class User {
	private int id;
	private String name;
	private Date birthday;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
}

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="domain">
	<class name="User">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name" unique="true"/>
		<property name="birthday"/>
	</class>
</hibernate-mapping>

 

package Util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public final class HibernateUtils {
	private static SessionFactory sessionFactory;
	private HibernateUtils(){
	}
	static{
		Configuration cfg = new Configuration();
		cfg.configure();
		SessionFactory sf = cfg.buildSessionFactory();
	}
	public static SessionFactory getSessionFactory(){
		return sessionFactory;
	}
	public static Session getSession(){
		return sessionFactory.openSession();
	}
}

 

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

<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///test</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password"></property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.hbm2ddl.auto">validate</property>
		<property name="show_sql">true</property>
		<mapping resource="domain/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

 

  • 大小: 20.8 KB
分享到:
评论

相关推荐

    J2EE系列讲座之Hibernate.lesson1.rar

    【描述】"J2EE系列讲座之Hibernate.lesson1.rar" 暗示这是一个教学课程或教程的第一部分,专注于介绍Hibernate的基础知识和核心概念。在这个压缩包中,可能包含了课件、源代码示例、讲解视频或者PDF文档等,帮助初学...

    开发者突击:Java Web主流框架整合开发:J2EE+Struts+Hibernate+Spring 部分例子源代码 及数据库

    它还支持 Criteria 查询、HQL(Hibernate Query Language)等高级查询方式,简化了数据库操作。 Spring框架则是一个全面的企业级应用开发框架,它的核心特性是依赖注入和面向切面编程。Spring可以帮助开发者管理...

    J2EE-Struts-Hibernate

    Hibernate提供了丰富的查询语言HQL(Hibernate Query Language)和Criteria API,使得数据库查询更加灵活和高效。 **Struts与Hibernate整合**在J2EE开发中具有重要意义。这种整合使得开发者可以在Struts的MVC框架下...

    浪磬J2EE第一期 Hibernate专题 第六讲 检索方式

    《浪磬J2EE第一期 Hibernate专题 第六讲 检索方式》 在J2EE开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本讲主要聚焦于Hibernate的检索方式,通过深入探讨和实践,我们将...

    开发者突击_Java+Web主流框架整合开发_J2EE+Struts+Hibernate+Spring+源代码

    Hibernate支持多种数据库,具有丰富的查询API,包括HQL(Hibernate Query Language)和Criteria API,使得数据库查询更加灵活和便捷。 Spring框架是一个全面的后端开发框架,包含了依赖注入(DI)、面向切面编程...

    J2EE平台的框架Hibernate

    6. **查询(Querying)**: Hibernate提供HQL(Hibernate Query Language)和 Criteria 查询,它们是面向对象的查询语言,比直接写SQL更符合面向对象思维。 **三、Hibernate使用流程** 1. **配置**: 配置Hibernate的...

    [VIP][强化]J2EE第一期 Hibernate专题 第一讲 Hibernate简介源码

    【J2EE与Hibernate简介】 在Java企业级应用开发领域,J2EE(Java 2 Platform, Enterprise Edition)是一个标准的平台,它提供了一个统一的框架来构建分布式、多层的应用程序。J2EE涵盖了服务器端组件模型、数据库...

    在线商城(j2EE,struts,hibernate)

    Hibernate支持自动持久化、查询语言HQL和 Criteria API,使得数据库操作更为简便。 在这个"OnlineGoodsShop"项目中,你可以学习到以下关键知识点: 1. **Struts配置**:理解struts-config.xml文件的结构,包括...

    在飞实习学J2EE之路:12.9.23 Hibernate的基本流程(登录)

    在这个"在飞实习学J2EE之路:12.9.23 Hibernate的基本流程(登录)"的主题中,我们将深入探讨Hibernate在处理登录场景时的关键步骤和技术要点。 1. **Hibernate简介** Hibernate是一个对象关系映射(ORM)框架,它...

    J2EE培训课件 Hibernate JSF CSS

    它提供了查询语言HQL(Hibernate Query Language)和Criteria API,以及强大的缓存机制,提高了应用性能。 3. **CSS(层叠样式表)** CSS是用于控制网页表现的语言,负责定义页面布局、颜色、字体等视觉效果。在...

    j2ee:Struts2-Hibernate-Spring

    它还提供了Criteria查询、HQL(Hibernate Query Language)等高级查询方式,增强了数据操作的灵活性。 **Spring** 框架是Java企业级应用的核心,它不仅仅是一个简单的MVC框架,而是提供了全面的解决方案,包括依赖...

    J2EE大家好.rar_J2EE_hibernate_spring_spring hibernate

    它支持多种数据库,如MySQL、Oracle、PostgreSQL等,并提供了强大的查询语言HQL(Hibernate Query Language)以及 Criteria API,使得数据操作更为便捷。 Spring框架则是一个全面的企业级应用开发框架,它包含了...

    j2ee用hibernate实现查询

    4. **查询实现**:Hibernate提供了多种查询方式,包括HQL(Hibernate Query Language)和Criteria API。HQL类似于SQL,但更面向对象。Criteria API提供了一种类型安全的方式来构造查询,它更适合于动态查询。在描述...

    J2EE复习积累(六)-Hibernate4.2

    Hibernate支持HQL(Hibernate Query Language)和 Criteria API,它们都是面向对象的查询方式,比直接写SQL更加直观和安全。此外,Hibernate 4.2进一步加强了JPQL(Java Persistence Query Language)的支持。 **7....

    精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例 PDF及光盘ISO

    书中会详细介绍Hibernate的实体映射、Session管理、查询语言HQL以及Criteria API的使用,让读者能够熟练掌握数据持久化的技巧。 最后,Spring框架是现代Java应用的基石,它提供了一个全面的应用程序开发框架,包括...

    J2EE所需jar包1 struts2 hibernate

    本压缩包中的"jar包1"包含了Struts2和Hibernate两个关键框架的库文件,它们是J2EE开发中的重要组成部分。 **Struts2** 是一个开源的MVC(Model-View-Controller)框架,它基于Action和Interceptor的概念,用于构建...

    基于Struts和Hibernate的J2EE应用

    7. **Hibernate查询**:HQL(Hibernate Query Language)和 Criteria 查询,以及动态SQL的使用。 8. **事务管理**:了解Hibernate的Transaction API,以及如何在Service层处理事务。 9. **整合Struts与Hibernate**:...

    java web所有api(j2ee struts2 hibernate spring)

    Java Web API,包括J2EE、Struts2、Hibernate和Spring,是开发企业级Web应用程序的核心框架和技术。这些技术在构建高效、可扩展且易于维护的Web应用中扮演着重要角色。 1. **J2EE (Java 2 Platform, Enterprise ...

    J2EE之struts,spring,hibernate经典面试题目

    3. **Criteria和HQL**:除了SQL,Hibernate提供了Criteria API和HQL(Hibernate Query Language)进行查询,这两种方式更符合面向对象的思维。 4. **缓存机制**:Hibernate支持一级缓存(Session缓存)和二级缓存,...

    j2ee项目实训——hibernate框架技术

    在J2EE项目开发中,Hibernate是一个非常重要的持久层框架,它简化了数据库与Java对象之间的交互,使得开发者可以更加专注于业务逻辑,而非繁琐的SQL语句编写。本实训主要围绕Hibernate框架技术展开,旨在帮助你深入...

Global site tag (gtag.js) - Google Analytics