`

Hibernate学习笔记

阅读更多
HQL 注意事项:

1.请把以前sql中的表名换成类名,把字段名换成属性名。注意我不是说HQL里的类名都是表名。类名>表名

2.这里就看一个select 类的例子,一便说明一下多态

person是man和woman的父类吧,在HQL中可以这样写:

from Person p

这就表示查出所有人了。

3.当然sql中的select from where group by having order by这些,HQL也是支持的了。

4.取一条记录query.uniqueResult()

5.取多个记录query.list()

6.分页。在执行查询之前

query.setFirstResult(0)

query.setMaxResult(2)

注意在这里的0是开始下标。2是从开始下标的一页的记录数

7.绑定参数

?---------------------query.setString(1)

:name---------------query.setString(name,"jiaxiao")

:entity---------------query.setEntity(entity,jnew Person())

8.内连接

from Company c inner join c.employees e;

相当于select c.*,e.* from company c, c.employees e where c.id=e.compid(+)

返回的是一个object[]

还可以级联

from A a left join a.b b leftc join b.c c

隐式查询:

from Province p where p.City.name="guanyuan";

此外还有子查询,组函数等

from Company c where 1< ( select count(*) from c.employees e);

投影查询:

select new 包名.类名(e.name,c.name) from company c left join c.employee e

这个类为一个普通的POJO只有 e.name,c.name两个属性

集合过滤

select c from Company c left join Employee e

sess.createFilter(c.getEmployee(),"where e.name='xx'");


条件查询
Java代码 复制代码

   1. //条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数     
   2.         String hql = "from Users where name=? and passwd=?";     
   3.         Query query = session.createQuery(hql);     
   4.         //第1种方式     
   5. //      query.setString(0, "name1");     
   6. //      query.setString(1, "password1");     
   7.         //第2种方式     
   8.         query.setParameter(0, "name1",Hibernate.STRING);     
   9.         query.setParameter(1, "password1",Hibernate.STRING);     
  10.         List<Users> list = query.list();     
  11.         for(Users users : list){     
  12.             System.out.println(users.getId());     
  13.         }    

//条件查询,参数索引值从0开始,索引位置。通过setString,setParameter设置参数
String hql = "from Users where name=? and passwd=?";
Query query = session.createQuery(hql);
//第1种方式
//      query.setString(0, "name1");
//      query.setString(1, "password1");
//第2种方式
query.setParameter(0, "name1",Hibernate.STRING);
query.setParameter(1, "password1",Hibernate.STRING);
List<Users> list = query.list();
for(Users users : list){
System.out.println(users.getId());
}  

        
Java代码 复制代码

   1. //条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数     
   2.         String hql = "from Users where name=:username and passwd=:password";     
   3.         Query query = session.createQuery(hql);     
   4.         //第1种方式     
   5. //      query.setString("username", "name1");     
   6. //      query.setString("password", "password1");     
   7.         //第2种方式,第3个参数确定类型     
   8.         query.setParameter("username", "name1",Hibernate.STRING);     
   9.         query.setParameter("password", "password1",Hibernate.STRING);     
  10.         List<Users> list = query.list();     
  11.         for(Users users : list){     
  12.             System.out.println(users.getId());     
  13.         }   

//条件查询,自定义索引名(参数名):username,:password.通过setString,setParameter设置参数
String hql = "from Users where name=:username and passwd=:password";
Query query = session.createQuery(hql);
//第1种方式
//      query.setString("username", "name1");
//      query.setString("password", "password1");
//第2种方式,第3个参数确定类型
query.setParameter("username", "name1",Hibernate.STRING);
query.setParameter("password", "password1",Hibernate.STRING);
List<Users> list = query.list();
for(Users users : list){
System.out.println(users.getId());





Java代码 复制代码

   1. //条件查询,通过setProperties设置参数     
   2.         String hql = "from Users where name=:username and passwd=:password";     
   3.         Query query = session.createQuery(hql);     
   4.         //MyUser类的2个属性必须和:username和:password对应     
   5.         MyUser myUser = new MyUser("name1","password1");     
   6.         query.setProperties(myUser);     
   7.         List<Users> list = query.list();     
   8.         for(Users users : list){     
   9.             System.out.println(users.getId());     
  10.         }   


Code
List list=session.createQuery(“select new User(user.name,user.age) from User user ”).list();
for(int i=0;i
User user=(User)list.get(i);
user.setName(“gam”);
session.saveOrUpdate(user);//



Hibernate中持久化类的对象可以划分为三种状态,分别是瞬态,持久态,脱管态。



1.       瞬态(Transient),也叫临时态。处于这种状态的对象具备的特征如下:

a)         不在Session的缓存中,不与任何的Session实例相关联。

b)        在数据库中没有与之相对应的记录。

2.       持久态(Persistent),处于这种状态的对象具备的特征如下:

a)         在Session的缓存中,与Session实例相关联。

b)        在数据库中存在与之相对应的记录。

3.       脱管态(Detached),也叫游离态。处于这种状态的对象具备的特征如下:

a)         不在Session的缓存中,不与任何的Session实例相关联。

b)        在数据库中存在与之相对应的记录。(前提条件是没有其他Session实例删除该条记录)。



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

相关推荐

    Hibernate学习笔记特别详细

    《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...

    hibernate学习笔记

    在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....

    Hibernate学习笔记整理

    Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...

    Java相关课程系列笔记之十四Hibernate学习笔记

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...

    hibernate 学习笔记精要

    hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要

    hibernate学习笔记mashibing

    《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...

    Hibernate 学习笔记(全套)

    这套笔记是我学习Hibernate,进行相关技术点训练时记录下来的,其中包括技术点说明与相关事例,拿出来与大家分享。

    马士兵hibernate学习笔记(原版)

    ### 马士兵Hibernate学习笔记知识点总结 #### 一、课程内容概览 - **HelloWorld**:通过简单的示例程序介绍如何启动一个基于Hibernate的Java项目。 - **Hibernate原理模拟**:解释O/R Mapping的概念及其重要性。 -...

    马士兵hibernate学习笔记

    ### 马士兵Hibernate学习笔记知识点总结 #### 一、HelloWorld示例 - **目的**:通过简单的示例理解Hibernate的基本使用流程。 - **步骤**: - 创建Java项目`hibernate_0100_HelloWorld`。 - 建立库依赖,包括...

    hibernate API帮助文档 及hibernate学习笔记

    Hibernate是一款强大的Java持久...通过阅读这份“Hibernate API帮助文档”和“Hibernate学习笔记”,你将能够深入理解Hibernate的工作原理,掌握其API的使用,并能在实际项目中有效地利用Hibernate进行数据持久化操作。

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    hibernate学习笔记文档

    ### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...

    JDBC Hibernate学习笔记

    ### JDBC与Hibernate学习笔记 #### 一、JDBC概述 **1.1 ODBC与JDBC的区别** - **ODBC(Open Database Connectivity)**: 开放式数据库连接是一种开放标准的应用程序接口(API),用于实现数据库应用程序与不同...

    hibernate 学习笔记1

    ### 对象持久化与Hibernate学习笔记 #### 一、对象持久化的概念与重要性 - **定义**: 对象持久化是指将程序中的对象状态存储到持久化存储设备上的过程,以便在程序结束运行后仍然可以保留这些数据。 - **必要性**:...

    hibernate学习笔记.

    【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...

    hibernate 学习笔记3

    标题:Hibernate学习笔记3 描述:本篇笔记深入探讨了Hibernate框架中一对多关系的映射及持久化对象状态管理,结合个人理解与实践经验,旨在为读者提供一份详实的学习资料。 ### 一、一对多关系映射详解 在...

Global site tag (gtag.js) - Google Analytics