`

Hibernate Part 3:核心API和常量配置

 
阅读更多

 

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
分享到:
评论

相关推荐

    Hibernate part 14:查询及数据库并发事务

    7. **Query缓存和第二级缓存**:为了提高性能,Hibernate可以配置使用查询缓存和第二级缓存。查询缓存存储查询结果,而第二级缓存则存储整个对象或集合。 8. **并发问题处理**:死锁、脏读、不可重复读和幻读是并发...

    hibernate-jpa-2.1-api-1.0.2.Final-API文档-中文版.zip

    赠送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-jpa-2.1-api-1.0.2.Final-API文档-中英对照版.zip

    赠送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 最新官网 核心api,详细介绍hibernate的文档

    hibernate3 中文API

    2. **配置文件(Configuration)**: Hibernate的核心配置文件(hibernate.cfg.xml)包含了数据库连接信息、方言设置、缓存策略等,是启动Hibernate会话工厂的基石。 3. **会话(Session)**: Session是Hibernate与...

    Hibernate的核心API

    总的来说,Hibernate的核心API提供了便捷的对象关系映射(ORM)功能,简化了数据库操作,通过Session管理对象状态,Transaction处理事务,SessionFactory作为会话工厂,而Configuration则用于配置和初始化环境。...

    Hibernate核心配置文件对照表

    `hibernate.properties`是Hibernate的核心配置文件,用于设定与数据库连接、缓存策略、事务管理等相关的重要参数。下面我们将详细探讨这个配置文件中的关键知识点。 1. **数据库连接配置** - `hibernate....

    hibernate3.5.1Final.核心API chm版

    hibernate3.5.1Final.核心API chm版

    Hibernate 中文api 等学习资料

    3. **Hibernate 中文API文档.chm**:这是Hibernate的中文API参考手册,对每个类、接口和方法的详细说明,对于查阅具体功能和方法的使用非常有帮助。 4. **Hibernate3.2.chm**:这个文件可能包含了Hibernate 3.2版本...

    hibernate jar包+api

    标题"hibernate jar包+api"和描述"hibernate jar包+api"明确指出我们要讨论的是Hibernate ORM框架的相关资源,包括核心的jar包和API文档。Hibernate是一个流行的关系型数据库管理系统(RDBMS)到Java对象的映射工具...

    hibernate3.2 api和配置文档

    本资源聚焦于Hibernate 3.2版本的API和配置文档,该版本发布于2006年,是Hibernate发展历史中的一个重要里程碑,引入了许多新特性和优化。 在Hibernate 3.2 API中,主要包括以下几个关键部分: 1. **...

    hibernate 和hibernate_annotations(中文API).pdf帮助文档

    在这个“hibernate 和hibernate_annotations(中文API)帮助文档”中,我们将深入探讨Hibernate的核心概念、特性以及如何使用Hibernate Annotations进行对象的持久化。 一、Hibernate核心概念 1. 实体(Entity):在...

    Hibernate中文开发文档API.zip

    3. **实体类和映射文件**: Hibernate通过`@Entity`注解定义实体类,使用`hbm.xml`或注解方式映射数据库表结构。 4. **Session接口**: Session是Hibernate的主要工作单元,用于与数据库进行交互,支持CRUD(创建、...

    hibernate中文APIhibernate annotation 中文API

    Hibernate API提供了对数据库操作的各种接口和类,包括Session、SessionFactory、Query等核心组件。Session是与数据库交互的主要接口,用于执行CRUD(创建、读取、更新、删除)操作。SessionFactory是线程安全的,...

    hibernate中英文API文档

    `Hibernate3.2.chm`可能是Hibernate 3.2版本的官方API帮助文件,通常包含了所有类、接口、方法和常量的详细说明。`Hibernate 中文API文档.chm`则提供了中文版的解释,对于中文使用者来说更友好,便于理解和学习。API...

    HibernateApi.zip

    Hibernate API,作为Java开发中的一款核心库,主要用于简化数据库操作,提供了一种对象关系映射(ORM)解决方案,将传统的SQL语句与Java对象进行解耦,使得开发者可以更加专注于业务逻辑而非数据库交互。本篇文章将...

    《Hibernate 3 API参考手册》-电子文档下载(PDF)

    关于Hibernate 3 API,它是Hibernate框架的核心组成部分,提供了丰富的接口和类,用于处理数据持久化。以下是一些主要的API知识点: 1. Session接口:它是与数据库交互的主要接口,负责对象的创建、更新和删除操作...

    hibernate3全部jar包:hibernate3.jar.zip 下载

    Hibernate3引入了许多增强功能,如Criteria查询、HQL(Hibernate Query Language)以及对JPA(Java Persistence API)的支持,提供了更丰富的查询方式和更高的灵活性。 hibernate3.jar是主要的Hibernate库文件,...

    kingbaseV8 hibernate jdbc 驱动

    而较早的版本如`hibernate3.jar`和`hibernate-3.1.jar`则对应Hibernate 3.x系列,其功能可能没有最新版本全面。 `hibernate-jpa-2.1-api-1.0.0.Final.jar`是Java Persistence API (JPA) 2.1的实现,JPA是Java EE...

Global site tag (gtag.js) - Google Analytics