Hibernate核心开发接口
AnnotationConfiguration / Configuration
hibernate.cfg.xml 如果改名了怎么办? new AnnotationConfiguration().configure("修改后的名字").bulidSessionFactory();
SessionFactory 简单理解为 维护数据库连接池的东西,用于产生Session
全局只需一个SessionFactory,把它做成一个单例
getCurrentSession() 跟openSession()
getCurrentSession 跟 openSession 不能混用,混用后getCurrentSessiong 跟 openSession 获得的不是同一个session
getCurrentSession -- i.如果上下文(可以设置,在cfg.xml下,current_session_context_class中设置)已经有了Session,就不用再创建了.
并且不需要close.当commit之后,Session就关闭了,再使用getCurrentSession之后就是一个新的Session了
ii.可以界定事务边界.
(当current_session_context_class用thread的时候,用connection,无异常commit,有异常rollback
当处理分布式事务的时候,只有一个connection不能保证在同一个事务里,需要一个JTATransaction manager
来管理,记录操作,进行回滚(XA driver) 此时使用JTA.
针对一个数据库为connection,多数据库,则为分布式事务,jta(java transaction api)
)
openSession -- 创建一个新的Session,每次调用都创建一个新的Session
共同点:都可以save,commit.
Session
管理一个数据库的任务单元
只用hibernate,要try-catch-finally,跟Spring一起则不用
1) save()
对象有三种状态,Transient,Persistent,Detached.
刚创建的时候,为Transient,save之后为Persistent,当session close之后则为detached.
1.有没有ID 内存中一个对象,全都没有.如果没有ID,则一定为Transient
2.ID在数据库中有没有 数据库中有,缓存中hashmap有,对象也还有.则为Persistent.
3.ID在内存中有没有 数据库中有,缓存中没有.对象还有,则为Detached.
2)delete()
delete之后会变成Transient状态,刚new的不能delete,只要有id号就可以删.
3)load()
session.load(xxx.class,主键),返回值为object,可强制转换成需要的类型.
load出来之后的对象为Persistent状态.当输入主键值不存在的时候,暂时不
会报错.
4)get()
与load方法使用方法一样,但是get方法是立刻发出sql语句,但是用load方法的时候,
并不是直接发出sql语句,它返回的是代理对象,要真正用的时候才发出sql语句
---- 什么是代理对象,动态代理? 这个需要理解.
5)update()
update之后变成Persistent状态,需commit才会写到数据库.
i.由session生成了一个detached状态的对象,如t , 可以t.setName("99"),然后用新创session2,
直接session2.update(t);然后commit().
ii.如果updat一个Transient状态的对象,不行.没有ID,不可update.如果Transient对象
被手动设置了一个id.如T.setId("6"),则可以.
update的时候,会自动把没更新过的字段也更新一遍.
如果一个对象为Persistent状态,不需update方法,直接set,commit的时候会自动更新.
让其不会自动update的方法:
(1)@Column(updatable=false) , 或xml 设置property.update=false;这种方法不用
(2)在xml中 class.dynamic-update设成false;
(3)跨session,设了dynamic-update,当Persistent状态时,改了谁就发谁,detached状态的时候
就全部update.想不自动update,用merge()方法代替update()方法.其实merge()方法会先load出来
然后变成Persistent状态,再做update.
(4)用hql语句.
6)saveOrUpdate()
根据状态来判断使用save或者update.
7)clear()
把缓存里的数据强制清除.get/load方法执行前都会去缓存中查找,存在则不用再从数据库中取出
8)flush()
把缓存里的数据强制写入数据库,当session.getTransaction().commit()执行的时候,会自动执行flush();
SchemaExport
xml可以不设自动生成表,可以用该方法生成
1) create(true,true) 第一个参数为是否打印ddl语句,第二个是否写入数据库
- 浏览: 1208312 次
- 性别:
- 来自: 广州
最新评论
-
it_node:
谢谢拦截器知识分享,推荐一个flask的入门教程给大家:深入浅 ...
Spring MVC 方法注解拦截器(转) -
18335864773:
尝试用一下pageoffice插件去生成excel把。代码调用 ...
用POI生成Excel文件的典型例子【基于poi3.0 附源码】 -
小梦翔:
管用,不过第一个只有Android4.4的,第二个有4.4一下 ...
Android Kikat下由图片Uri获取Path的解决方案 -
spring_springmvc:
java程序语言学习教程 地址http://www.zuida ...
JAVA程序员您需要学习的25个标准 -
lliiqiang:
与客户端交互是前台事情,即便出错,对于后台数据仍然可以被视为交 ...
MVC设计模式的总结
相关推荐
以上就是Hibernate核心开发接口的简要介绍。在实际开发中,通过熟练掌握这些接口和概念,我们可以高效地利用Hibernate进行数据库操作,降低系统的耦合度,提升开发效率。通过阅读给出的源码s2sh_Hibernate03_CoreAPI...
- **Hibernate核心开发接口介绍**:讲解Hibernate的核心API,如Configuration、SessionFactory、Session等。 - **对象的三种状态**:深入理解持久化对象的瞬态、持久化、游离状态。 - **关系映射**:讲解一对一、一...
第1课 课程内容 6 第2课 Hibernate UML图 6 第3课 风格 7 第4课 资源 7 第5课 环境准备 7 第6课 第一个示例Hibernate HelloWorld 7 第7课 建立Annotation版本的...第14课 Hibernate核心开发接口(重点) 29 ........
6. Hibernate核心开发接口介绍(重点) Hibernate的主要API包括Session、Transaction、Query、Criteria等。Session是操作数据库的基本单元,Transaction处理事务,Query和Criteria用于执行查询。 7. 对象的三种...
6. **Hibernate核心开发接口** Session、SessionFactory、Transaction等接口是Hibernate的主要操作对象。学习它们的用法,包括增删改查操作、事务处理,是掌握Hibernate核心功能的基础。 7. **对象的三种状态** ...
通过对这些接口的学习和掌握,开发者可以更好地利用 Hibernate 来简化 Java 应用程序与数据库之间的交互,提高开发效率并降低维护成本。在实际项目中,合理运用这些接口可以帮助开发者构建出更加健壮和高效的系统。
**标题:“Hibernate核心jar包”** 在Java世界中,Hibernate是一个流行的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的交互转化为简单的API调用。核心jar包是Hibernate框架的基础,...
1. **Hibernate ORM框架**:Hibernate的核心功能是将Java类与数据库表进行映射,通过对象的方式来操作数据,而不是传统的SQL语句。这种映射关系通常定义在Hibernate的配置文件(hibernate.cfg.xml)和实体类(Entity...
总结,这个压缩包包含了Hibernate开发所需的全部jar包,包括Hibernate核心库、JTA事务管理、JPA规范实现等,使用这些jar包,开发者可以轻松实现Java项目中的ORM功能,利用Hibernate的强大功能进行数据库操作,同时...
3. **Hibernate核心组件**:包括Session接口、SessionFactory、Entity、Criteria API等,这些都是Hibernate框架的核心组成部分,用于实现对象的持久化。 4. **映射机制**:Hibernate使用XML或注解的方式定义对象与...
7. **Hibernate核心开发接口**:包括Session、Transaction、Query等接口,掌握这些接口的使用是进行数据操作的关键。 8. **对象的三种状态**:瞬时态、持久态和脱管态,理解对象状态的变化对于管理对象的生命周期至...
本篇将深入探讨Hibernate的五个核心接口:Session、SessionFactory、Transaction、Query和Configuration。 1. **Session接口**: Session接口是Hibernate的核心接口之一,提供了对持久化对象的基本操作,包括创建...
Hibernate核心开发接口介绍** - **关键接口**: - `Configuration`:用于读取配置文件,构建SessionFactory。 - `SessionFactory`:用于创建Session,是线程安全的,整个应用只需要一个实例。 - `Session`:...
4. Hibernate核心开发接口: Hibernate提供了多个核心接口,如Session、SessionFactory、Query等,它们用于处理数据库交互。学习这些接口的使用是掌握Hibernate的关键。 5. 对象的三种状态: Hibernate中,对象有...
下面将详细讲解Hibernate的核心代码及其相关知识点。 1. **配置文件**: Hibernate的核心配置文件是`hibernate.cfg.xml`,其中包含了数据库连接信息、方言设置、缓存配置等。例如: ```xml <hibernate-...
#### 六、Hibernate核心开发接口深度剖析 - **API概览**:深入研究Hibernate API文档,重点关注`Configuration`、`SessionFactory`、`Session`、`SchemaExport`(用于自动建表)和`Query`接口的功能与使用方法,这些...
《Hibernate核心类库详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层数据存储。本篇文章将详细探讨`hibernate-release-...
3. **Hibernate核心jar包**:主要包含以下组件: - **hibernate-core.jar**:这是Hibernate的基础库,包含了所有核心功能,如实体管理、session工厂、缓存管理等。 - **hibernate-entitymanager.jar**:提供了JPA...
1. Session接口:它是Hibernate的主要工作接口,负责对象的持久化、检索、更新和删除。 2. Configuration类:配置Hibernate,加载并解析Hibernate配置文件,创建SessionFactory。 3. SessionFactory:创建Session...
【hibernate核心技术】主要涉及的是Java开发中的两个重要框架:Struts和Hibernate。这两个框架在企业级应用开发中有着广泛的应用,它们分别是MVC(Model-View-Controller)架构模式中的控制器和持久层解决方案。 ...