`

Hibernate常见术语、操作、区别

    博客分类:
  • ORM
 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2359961

 

Hibernate核心接口

Configuration

SessionFactory

Session

Query

Criteria

Transaction

 

Hibernate工作原理

配置Configuration对象,读取并解析配置文件

读取并解析映射信息,创建SessionFactory

创建session对象

开启事务Transaction

完成CRUD持久化操作

提交事务

关闭session

 

Hibernate关系映射

@ManyToOne(fetch默认FetchType是eager)

@OneToMany(fetch默认FetchType是lazy)

@OneToOne(fetch默认FetchType是eager)

@ManyToMany(fetch默认FetchType是lazy)

 

Hibernate对象状态

Transient

Persistent

Detached

Customer customer = new Customer();		// new之后,不处于Session的缓存中:临时态
session.save(customer);
// 处于这两句之间,已经被持久化,加入到Session的缓存中:持久态
transaction.commit();
session.close();
// session关闭之后,已经被持久化,但不再处于Session的缓存中:游离态

 

Hibernate的缓存等级及其特点

一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库取数据。

二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库。

 

Hibernate有哪些主键

TABLE

SEQUENCE

IDENTITY

AUTO

 

Hibernate有几种查询数据的方式

有三种查询方式

  • HQL:Hibernate Query Language,它跟SQL非常类似
  • Criteria Query,以对象的方式添加查询条件
  • SQL,直接使用SQL语句操作数据库

Hibernate的Set, List, Bag, Map有什么异同

List可以重复,有序的一种集合

Bag(结合了List与Set),可以重复且没有顺序的一种集合,是Hibernate提供的

Set不可以重复,没有顺序的一种集合

Map是key-value对形式的一种映射

 

Hibernate中session.save()和session.persist()的区别

session.save()返回的是Serializable

session.persist()返回的是void


 

Hibernate中load()方法和get()方法的区别

load()与get()方法都可以根据标识符属性值查询获取一个持久化对象,但是在为找到符合条件的持久化对象时,load()方法抛出违例;get()方法返回null。

get()方法先从Hibernate一级缓存中查询符合条件的对象,找不到则直接从数据库中查找记录;

而load()方法则从Hibernate先从Hibernate的一级缓存中查找符合条件的对象,找不到还会在Hibernate的二级缓存中查找对象,仍未找到才会查找数据库。

 

Hibernate中inverse属性的作用

在Hibernate中一对多的单向或者双向关联的情况下,我们可以将“一”方控制权交给“多”方,称为“控制反转”(inverse),代码中使用控制反转需要在一方的映射文件中设置inverse属性为true,该属性的默认值为false。

 

Hibernate的检索策略

HQL

// 创建一个Query对象
Query query = session.createQuery("from Customer as c where c.name = :customerName" and c.age = :customerAge");
// 动态绑定参数
query.setString("customerName", "Tom");
query.setInteger(customerAge", 21);
// 执行查询,返回查询结果
List result = query.list();

方法链编程风格
List result = session.createQuery("from Customer as c where c.name = :customerName" and c.age = :customerAge")
	.setString("customerName", "Tom")
	.setInteger("customerAge", 21)
	.list();

QBC

// 创建一个Criteria对象
Criteria criteria = session.createCriteria(Customer.class);
// 设定查询条件,然后把查询条件加入到Criteria中
Criterion criterion1 = Expression.like("name", "T%");
Criterion criterion2 = Expression.eq("age", new Integer(21));
criteria = criteria.add(criterion1);
criteria = criteria.add(criterion2);
// 执行查询语句,返回查询结果
List result = criteria.list();

方法链编程风格
List result = session.createCriteria(Customer.class)
	.add(Express.like("name", "T%"))
	.add(Express.eq("age", new Integer(21)))
	.list();

 

Hibernate分页查询

采用HQL检索方式

Query query = session.createQuery("from Customer c order by c.name asc");
query.setFirstResult(0);
query.setMaxResult(10);
List result = query.list();

采用QBC检索方式

Criteria criteria = session.createCriteria(Customer.class);
criteria.addOrder(Order.asc("name"));
criteria.setFirstResult(0);
criteria.setMaxResult(10);
List result = criteria.list();

  

 

 

 

 

 

  • 大小: 29.1 KB
  • 大小: 27.3 KB
分享到:
评论

相关推荐

    Hibernate体系结构的概要图

    Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的...

    hibernate-最全架包和帮助文档

    Hibernate是一个开源的对象关系映射(ORM)框架,它在Java编程语言中广泛使用,使得开发者可以更加方便地操作数据库,而无需直接编写SQL语句。这个压缩包“hibernate-distribution-3.3.2.GA”包含了Hibernate 3.3.2...

    hibernate配置二三级缓存

    在Java开发领域中,Hibernate作为一种流行的ORM(对象关系映射)框架,被广泛应用于数据库操作。为了提高应用程序的性能,Hibernate支持多种级别的缓存机制,其中最为常见的是二级缓存。此外,还有一些场景下会用到...

    hibernate annotation 中文文档

    - **4.1.2 内建约束**:Hibernate 验证器内置了一些常见的约束注解,如 `@NotNull`、`@Size` 等。 - **4.1.3 错误信息**:可以通过 `@Constraint` 注解的 `message` 属性来定义约束违反时的错误消息。 - **4.1.4 ...

    hibernate中文参考文档

    通过以上介绍,我们可以看到Hibernate作为一款成熟的ORM框架,提供了丰富的特性和工具,使得开发者能够更加高效地进行数据库操作。无论是对于初学者还是有一定经验的开发者来说,深入学习和掌握Hibernate都是非常...

    hibernate 3.2 中文参考手册

    Hibernate是一个开放源代码的对象关系映射框架,它通过将应用中的Java对象映射到数据库表的方式,实现了持久化操作。这不仅极大地简化了数据访问层的编程工作,还提高了代码的可维护性和可扩展性。在Hibernate 3.2...

    Hibernate中文手册3.2最新版本

    通过Hibernate,开发人员可以更加高效地进行数据持久化操作,并减少与数据库交互时所需的样板代码量。在Hibernate3.2版本中,引入了多项新功能和改进,旨在进一步提高性能和简化开发流程。 #### 二、安装与配置 在...

    Hibernate 中文手册

    - **最佳实践**:总结使用 Hibernate 时的一些最佳实践,帮助开发者避免常见的错误。 #### 八、社区支持与资源 - **官方文档**:推荐开发者阅读官方文档以获取最权威的技术指导。 - **论坛与交流群**:加入 ...

    Java 名词术语解释

    下面是对一些常见Java名词术语的详细解释: 1. **认证(Authentication)**:这是网络安全的基础,指的是验证用户身份的过程,确保只有合法的用户能够访问系统或网络资源。 2. **授权(Authorization)**:认证成功后...

    Java开发者应当理解的专业术语编程开发技术共5页.pdf

    实践中,还需要不断学习和探索,了解最新的框架和技术,如Spring、MyBatis、Hibernate等,以及Java 8及以后版本引入的新特性,如Lambda表达式、流API等。只有不断更新知识库,才能适应快速发展的IT行业。

    java专业术语.pdf

    28. Hibernate:一个开源的对象关系映射(ORM)库,用于将Java对象映射到数据库表。 29. Integrated Development Environment(IDE):集成开发环境,是一个软件应用,提供代码编辑器、编译器、调试器等工具的集成...

    SpringMVC 头像文件上传

    综上所述,"SpringMVC 头像文件上传"项目涉及了使用SpringMVC处理文件上传请求,通过Spring管理依赖,使用Hibernate进行数据库操作,以及用Maven进行项目构建和依赖管理。这是一个典型的Java Web开发实例,展示了SSH...

    ssh公司内部管理系统

    SSH框架在IT行业中是一个常见的术语,它代表Spring、Struts和Hibernate这三个开源Java框架的组合。这个"ssh公司内部管理系统"显然是一款利用这些技术构建的企业级应用,旨在提高公司的内部管理效率和流程自动化。 ...

    完整的SSH整合架包

    SSH整合架包是一个常见的Java开发中的术语,它指的是Spring、Struts2和Hibernate三个开源框架的集成。在Java Web开发中,这三大框架通常被一起使用,以构建高效、可维护的企业级应用。下面将详细解释这三个框架以及...

    nut dao的hello world

    nut dao 可能是一个Java库,用于数据库操作,类似于Hibernate或MyBatis。它可能提供了简单的API,使得开发者可以方便地执行SQL查询,处理结果集,并进行对象关系映射(ORM)。在 "DaoDemo" 这个文件名中,“Dao”是...

    s2sh3大框架整合练习

    在IT领域,"s2sh3"是一个常见的术语,指的是Struts2、Spring3和Hibernate3这三个Java Web开发框架的集成。这个压缩包文件“s2sh3大框架整合练习”是为了帮助开发者实践和理解这三个框架如何协同工作以构建复杂的Web...

    需求分析报告书-基于SSH架构的企业人力资源管理系统(组织架构管理模块).doc

    SSH(Struts+Spring+Hibernate)是一种常见的Java Web开发框架,它结合了Struts的MVC设计模式、Spring的依赖注入以及Hibernate的对象关系映射,为企业级应用提供了高效且灵活的基础。 【目的】 本报告的目的是为了...

    Javabean与DTO的区别.docx

    JavaBean和DTO(Data Transfer Object)都是Java编程中常见的对象模型,它们各自在不同的场景下发挥着重要作用。 JavaBean是Java语言中的一种设计模式,主要用于封装数据和业务逻辑。它遵循一定的规范,包括: 1. ...

    字典程序(java+sql数据库)

    在“常见操作+数据库”这个压缩包中,可能包含了一些示例代码或文档,涵盖了如何在Java中执行常见的数据库操作,如连接数据库、执行查询、处理结果集等。这可能包括了Java源代码文件(.java)、数据库脚本(.sql)、...

    Java采购管理信息系统源码-elision.github.com:Elision术语重写器主页

    3. **Hibernate ORM**:对象关系映射(ORM)工具如Hibernate,将数据库操作转化为Java对象,使得开发更便捷。在采购系统中,Hibernate可用来操作供应商、采购订单等实体对象,实现数据的增删改查。 4. **JDBC**:...

Global site tag (gtag.js) - Google Analytics