Hibernate体系结构图:
Hiberante框架支持两种配置文件:
src/hibernate.properties:数据库连接、常用数据配置
src/hibernate.cfg.xml:数据库连接、常用数据配置、二级缓存策略、 hbm的映射、 事件(监听器 )
src/hibernate.cfg.xml可配置的参数更多,功能更加强大
Hibernate常用数据配置:
hibernate.dialect 操作数据库方言
hibernate.connection.driver_class 连接数据库驱动程序
hibernate.connection.url 连接数据库URL
hibernate.connection.username 数据库用户名
hibernate.connection.password 数据库密码
hibernate.show_sql 在控制台上输出SQL语句
hibernate.format_sql 格式化控制台输出的SQL语句
hibernate.connection.autocommit 事务是否自动提交,没有手动开始事物时使用
hibernate.hbm2ddl.auto DDL策略
create:Hibernate启动的时候先drop表,再create表 (用于测试)
create-drop: Hibernate启动的create表,关闭前执行一下drop表 (用于测试)
update: Hibernate启动的时候会去检查schema是否一致,如果不一致会做scheme更新 (用于产品),如果类映射发生变化,在数据库中插入新的数据列,不会改变原有列
validate: Hiberante启动时验证数据库的schema与hibernate是否一致,如果不一致就抛出异常,并不做更新
Configuration 类:
该类的功能是加载Hibernate 配置文件,Hibernate有两种配置文件形式hibernate.properties和hibernate.cfg.xml
方式一:
Configuration configuration = new Configuration().configure();
这种方式new Configuration()时加载hibernate.properties文件,调用configure()时加载hibernate.cfg.xml配置文件,配置文件中通过
<mapping resource="rock/lee/bean/Customer.hbm.xml" />
加载hbm文件
方式二:
Configuration configuration = new Configuration();
configuration.addResource("rock/lee/bean/Customer.hbm.xml");
configuration.addClass(Customer.class);
只加载文件hibernate.properties,不加载hibernate.cfg.xm,手工加载hbm.xml和实体类
通过配置的方式加载hbm.xml和实体类的方式在开发中更为常见,而不是通过硬编码的方式
SessionFactory 接口:
加载hibernate所有配置信息,预定义SQL语句, 管理二级缓存, 内部维护连接池
SessionFactory sessionFactory = configuration.buildSessionFactory();
SessionFactory 需要通过Configuration对象获得,SessionFactory有两个非常重要的函数
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
从内部连接池随机获取一个连接,构造一个Session对象
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
获得的Session是与当前线程绑定的Session对象,Web开发中使用,需要特殊配置使用Hibernate操作CRUD是都要Configuration-->SessionFacctory-->Session
@Test
public void test(){
Configuration configuration = new Configuration().configure();// 实例化配置对象,加载配置文件 hibernate.cfg.xml
SessionFactory sessionFactory = configuration.buildSessionFactory();// 创建Session连接工厂
Session session = sessionFactory.openSession();//创建Session
Transaction transaction = session.beginTransaction();//开启事物
//.....编写CRUD代码
transaction.commit();//提交事务
session.close();//关闭session
sessionFactory.close();//关闭session工厂
}
太繁琐,Don'r Reapet Yourself原则,对这段代码提取为一个工具类,方便使用
public class HibernateUtils {
private static Configuration configuration;
private static SessionFactory sessionFactory;
static{
configuration = new Configuration().configure();
sessionFactory= configuration.buildSessionFactory();
}
public static Session openSession(){
return sessionFactory.openSession();
}
public static Session getCurrentSession(){
return sessionFactory.getCurrentSession();
}
}
Session 接口 :
相当于一个数据库连接,类似于JDBC的Connection,有了这个连接就可操作数据了,提供了CRUD具体操作函数
save 插入一个对象数据
update 修改一个对象数据
delete 删除一个对象数据
get/load 根据id查询一个对象
createQuery / createSQLQuery 获得查询对象,根据HQL/SQL 完成数据查询
createCriteria() 高级条件查询对象 (面向对象思想进行条件查询 )
以上操作除了条件查询外其它都在《Hibernate Part 2:单表CRUD》出现过了
http://mvplee.iteye.com/blog/2186235
Transaction 接口:
事物操作接口,如果没有开启事务,那么每个Session的操作,都相当于一个独立的事务,默认事务,可以通过在hibernate.cfg.xml 配置,设置事物默认提交
Transaction transaction = session.beginTransaction();//获取事物处理对象
transaction.begin();//开启事物
transaction.commit();//事物提交
transaction.rollback();//事物回滚
开启事物,异常后回滚
@Test
public void testTransaction() {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();//获取事物处理对象
transaction.begin();//开启事物
Customer c1 = new Customer("小明",18,"北京");
session.save(c1);
int i = 1/0;
Customer c2 = new Customer("小小红",28,"上海");
session.save(c2);
transaction.commit();//事物提交
session.close();
sessionFactory.close();
}
控制台会打印一条insert语句,但数据库不会有任何数据被插入
Query 接口 :
匿名参数的查询
@Test
public void testQueryByParameter() {
Session session = HibernateUtils.openSession();
Query query = session.createQuery(" from Customer where age=?");
query.setParameter(0, 18);
@SuppressWarnings("unchecked")
List<Customer> list = query.list();
System.out.println(list);
}
有名称参数查询
@Test
public void testQueryByParameter() {
Session session = HibernateUtils.openSession();
Query query = session.createQuery(" from Customer where age=:age");
query.setParameter("age", 18);
@SuppressWarnings("unchecked")
List<Customer> list = query.list();
System.out.println(list);
}
分页查询
query.setFirstResult(0);// 返回第一条记录索引
query.setMaxResults(5);// 返回最大记录条数
- 大小: 54.3 KB
分享到:
相关推荐
7. **Query缓存和第二级缓存**:为了提高性能,Hibernate可以配置使用查询缓存和第二级缓存。查询缓存存储查询结果,而第二级缓存则存储整个对象或集合。 8. **并发问题处理**:死锁、脏读、不可重复读和幻读是并发...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
hibernate 最新官网 核心api,详细介绍hibernate的文档
2. **配置文件(Configuration)**: Hibernate的核心配置文件(hibernate.cfg.xml)包含了数据库连接信息、方言设置、缓存策略等,是启动Hibernate会话工厂的基石。 3. **会话(Session)**: Session是Hibernate与...
总的来说,Hibernate的核心API提供了便捷的对象关系映射(ORM)功能,简化了数据库操作,通过Session管理对象状态,Transaction处理事务,SessionFactory作为会话工厂,而Configuration则用于配置和初始化环境。...
`hibernate.properties`是Hibernate的核心配置文件,用于设定与数据库连接、缓存策略、事务管理等相关的重要参数。下面我们将详细探讨这个配置文件中的关键知识点。 1. **数据库连接配置** - `hibernate....
hibernate3.5.1Final.核心API chm版
3. **Hibernate 中文API文档.chm**:这是Hibernate的中文API参考手册,对每个类、接口和方法的详细说明,对于查阅具体功能和方法的使用非常有帮助。 4. **Hibernate3.2.chm**:这个文件可能包含了Hibernate 3.2版本...
标题"hibernate jar包+api"和描述"hibernate jar包+api"明确指出我们要讨论的是Hibernate ORM框架的相关资源,包括核心的jar包和API文档。Hibernate是一个流行的关系型数据库管理系统(RDBMS)到Java对象的映射工具...
本资源聚焦于Hibernate 3.2版本的API和配置文档,该版本发布于2006年,是Hibernate发展历史中的一个重要里程碑,引入了许多新特性和优化。 在Hibernate 3.2 API中,主要包括以下几个关键部分: 1. **...
在这个“hibernate 和hibernate_annotations(中文API)帮助文档”中,我们将深入探讨Hibernate的核心概念、特性以及如何使用Hibernate Annotations进行对象的持久化。 一、Hibernate核心概念 1. 实体(Entity):在...
3. **实体类和映射文件**: Hibernate通过`@Entity`注解定义实体类,使用`hbm.xml`或注解方式映射数据库表结构。 4. **Session接口**: Session是Hibernate的主要工作单元,用于与数据库进行交互,支持CRUD(创建、...
Hibernate API提供了对数据库操作的各种接口和类,包括Session、SessionFactory、Query等核心组件。Session是与数据库交互的主要接口,用于执行CRUD(创建、读取、更新、删除)操作。SessionFactory是线程安全的,...
`Hibernate3.2.chm`可能是Hibernate 3.2版本的官方API帮助文件,通常包含了所有类、接口、方法和常量的详细说明。`Hibernate 中文API文档.chm`则提供了中文版的解释,对于中文使用者来说更友好,便于理解和学习。API...
Hibernate API,作为Java开发中的一款核心库,主要用于简化数据库操作,提供了一种对象关系映射(ORM)解决方案,将传统的SQL语句与Java对象进行解耦,使得开发者可以更加专注于业务逻辑而非数据库交互。本篇文章将...
关于Hibernate 3 API,它是Hibernate框架的核心组成部分,提供了丰富的接口和类,用于处理数据持久化。以下是一些主要的API知识点: 1. Session接口:它是与数据库交互的主要接口,负责对象的创建、更新和删除操作...
【hibernate-api】是Java开发中非常重要的一个组件,它是Hibernate ORM框架的核心API,用于在Java应用程序中管理和操作数据库。Hibernate是一个强大的、开放源代码的对象关系映射(ORM)框架,它极大地简化了Java与...
标题和描述中提到的关键信息是“hibernate3”、“依赖包”和“JDBC”。这表明我们将讨论关于Hibernate ORM框架的第三版,它所需的依赖库,以及与Java数据库连接(JDBC)的关系。Hibernate是一个流行的Java持久化框架...