原创转载请注明出处: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();
相关推荐
Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的...
Hibernate是一个开源的对象关系映射(ORM)框架,它在Java编程语言中广泛使用,使得开发者可以更加方便地操作数据库,而无需直接编写SQL语句。这个压缩包“hibernate-distribution-3.3.2.GA”包含了Hibernate 3.3.2...
在Java开发领域中,Hibernate作为一种流行的ORM(对象关系映射)框架,被广泛应用于数据库操作。为了提高应用程序的性能,Hibernate支持多种级别的缓存机制,其中最为常见的是二级缓存。此外,还有一些场景下会用到...
- **4.1.2 内建约束**:Hibernate 验证器内置了一些常见的约束注解,如 `@NotNull`、`@Size` 等。 - **4.1.3 错误信息**:可以通过 `@Constraint` 注解的 `message` 属性来定义约束违反时的错误消息。 - **4.1.4 ...
通过以上介绍,我们可以看到Hibernate作为一款成熟的ORM框架,提供了丰富的特性和工具,使得开发者能够更加高效地进行数据库操作。无论是对于初学者还是有一定经验的开发者来说,深入学习和掌握Hibernate都是非常...
Hibernate是一个开放源代码的对象关系映射框架,它通过将应用中的Java对象映射到数据库表的方式,实现了持久化操作。这不仅极大地简化了数据访问层的编程工作,还提高了代码的可维护性和可扩展性。在Hibernate 3.2...
通过Hibernate,开发人员可以更加高效地进行数据持久化操作,并减少与数据库交互时所需的样板代码量。在Hibernate3.2版本中,引入了多项新功能和改进,旨在进一步提高性能和简化开发流程。 #### 二、安装与配置 在...
- **最佳实践**:总结使用 Hibernate 时的一些最佳实践,帮助开发者避免常见的错误。 #### 八、社区支持与资源 - **官方文档**:推荐开发者阅读官方文档以获取最权威的技术指导。 - **论坛与交流群**:加入 ...
下面是对一些常见Java名词术语的详细解释: 1. **认证(Authentication)**:这是网络安全的基础,指的是验证用户身份的过程,确保只有合法的用户能够访问系统或网络资源。 2. **授权(Authorization)**:认证成功后...
实践中,还需要不断学习和探索,了解最新的框架和技术,如Spring、MyBatis、Hibernate等,以及Java 8及以后版本引入的新特性,如Lambda表达式、流API等。只有不断更新知识库,才能适应快速发展的IT行业。
28. Hibernate:一个开源的对象关系映射(ORM)库,用于将Java对象映射到数据库表。 29. Integrated Development Environment(IDE):集成开发环境,是一个软件应用,提供代码编辑器、编译器、调试器等工具的集成...
综上所述,"SpringMVC 头像文件上传"项目涉及了使用SpringMVC处理文件上传请求,通过Spring管理依赖,使用Hibernate进行数据库操作,以及用Maven进行项目构建和依赖管理。这是一个典型的Java Web开发实例,展示了SSH...
SSH框架在IT行业中是一个常见的术语,它代表Spring、Struts和Hibernate这三个开源Java框架的组合。这个"ssh公司内部管理系统"显然是一款利用这些技术构建的企业级应用,旨在提高公司的内部管理效率和流程自动化。 ...
SSH整合架包是一个常见的Java开发中的术语,它指的是Spring、Struts2和Hibernate三个开源框架的集成。在Java Web开发中,这三大框架通常被一起使用,以构建高效、可维护的企业级应用。下面将详细解释这三个框架以及...
nut dao 可能是一个Java库,用于数据库操作,类似于Hibernate或MyBatis。它可能提供了简单的API,使得开发者可以方便地执行SQL查询,处理结果集,并进行对象关系映射(ORM)。在 "DaoDemo" 这个文件名中,“Dao”是...
在IT领域,"s2sh3"是一个常见的术语,指的是Struts2、Spring3和Hibernate3这三个Java Web开发框架的集成。这个压缩包文件“s2sh3大框架整合练习”是为了帮助开发者实践和理解这三个框架如何协同工作以构建复杂的Web...
SSH(Struts+Spring+Hibernate)是一种常见的Java Web开发框架,它结合了Struts的MVC设计模式、Spring的依赖注入以及Hibernate的对象关系映射,为企业级应用提供了高效且灵活的基础。 【目的】 本报告的目的是为了...
JavaBean和DTO(Data Transfer Object)都是Java编程中常见的对象模型,它们各自在不同的场景下发挥着重要作用。 JavaBean是Java语言中的一种设计模式,主要用于封装数据和业务逻辑。它遵循一定的规范,包括: 1. ...
在“常见操作+数据库”这个压缩包中,可能包含了一些示例代码或文档,涵盖了如何在Java中执行常见的数据库操作,如连接数据库、执行查询、处理结果集等。这可能包括了Java源代码文件(.java)、数据库脚本(.sql)、...
3. **Hibernate ORM**:对象关系映射(ORM)工具如Hibernate,将数据库操作转化为Java对象,使得开发更便捷。在采购系统中,Hibernate可用来操作供应商、采购订单等实体对象,实现数据的增删改查。 4. **JDBC**:...