`
xp9802
  • 浏览: 1208214 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate核心开发接口

阅读更多

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语句,第二个是否写入数据库

分享到:
评论

相关推荐

    Hibernate教程03_Hibernate核心开发接口介绍

    以上就是Hibernate核心开发接口的简要介绍。在实际开发中,通过熟练掌握这些接口和概念,我们可以高效地利用Hibernate进行数据库操作,降低系统的耦合度,提升开发效率。通过阅读给出的源码s2sh_Hibernate03_CoreAPI...

    马士兵hibernate学习笔记(原版)

    - **Hibernate核心开发接口介绍**:讲解Hibernate的核心API,如Configuration、SessionFactory、Session等。 - **对象的三种状态**:深入理解持久化对象的瞬态、持久化、游离状态。 - **关系映射**:讲解一对一、一...

    Hibernate笔记 马士兵

    第1课 课程内容 6 第2课 Hibernate UML图 6 第3课 风格 7 第4课 资源 7 第5课 环境准备 7 第6课 第一个示例Hibernate HelloWorld 7 第7课 建立Annotation版本的...第14课 Hibernate核心开发接口(重点) 29 ........

    SSH之Hibernate总结

    6. Hibernate核心开发接口介绍(重点) Hibernate的主要API包括Session、Transaction、Query、Criteria等。Session是操作数据库的基本单元,Transaction处理事务,Query和Criteria用于执行查询。 7. 对象的三种...

    JAVA-hibernate笔记

    6. **Hibernate核心开发接口** Session、SessionFactory、Transaction等接口是Hibernate的主要操作对象。学习它们的用法,包括增删改查操作、事务处理,是掌握Hibernate核心功能的基础。 7. **对象的三种状态** ...

    hibernate中五个核心接口

    通过对这些接口的学习和掌握,开发者可以更好地利用 Hibernate 来简化 Java 应用程序与数据库之间的交互,提高开发效率并降低维护成本。在实际项目中,合理运用这些接口可以帮助开发者构建出更加健壮和高效的系统。

    hibernate核心jar包

    **标题:“Hibernate核心jar包”** 在Java世界中,Hibernate是一个流行的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的交互转化为简单的API调用。核心jar包是Hibernate框架的基础,...

    hibernate_3.2官方开发包

    1. **Hibernate ORM框架**:Hibernate的核心功能是将Java类与数据库表进行映射,通过对象的方式来操作数据,而不是传统的SQL语句。这种映射关系通常定义在Hibernate的配置文件(hibernate.cfg.xml)和实体类(Entity...

    hibernate所有开发包

    总结,这个压缩包包含了Hibernate开发所需的全部jar包,包括Hibernate核心库、JTA事务管理、JPA规范实现等,使用这些jar包,开发者可以轻松实现Java项目中的ORM功能,利用Hibernate的强大功能进行数据库操作,同时...

    hibernate完整开发包

    3. **Hibernate核心组件**:包括Session接口、SessionFactory、Entity、Criteria API等,这些都是Hibernate框架的核心组成部分,用于实现对象的持久化。 4. **映射机制**:Hibernate使用XML或注解的方式定义对象与...

    马士兵hibernate学习笔记.docx

    7. **Hibernate核心开发接口**:包括Session、Transaction、Query等接口,掌握这些接口的使用是进行数据操作的关键。 8. **对象的三种状态**:瞬时态、持久态和脱管态,理解对象状态的变化对于管理对象的生命周期至...

    J2EE企业级项目开发-3期(KC007) 5.3 探究Hibernate之核心接口文档.doc

    本篇将深入探讨Hibernate的五个核心接口:Session、SessionFactory、Transaction、Query和Configuration。 1. **Session接口**: Session接口是Hibernate的核心接口之一,提供了对持久化对象的基本操作,包括创建...

    hibernate的一份知识点总结

    Hibernate核心开发接口介绍** - **关键接口**: - `Configuration`:用于读取配置文件,构建SessionFactory。 - `SessionFactory`:用于创建Session,是线程安全的,整个应用只需要一个实例。 - `Session`:...

    hibernate笔记

    4. Hibernate核心开发接口: Hibernate提供了多个核心接口,如Session、SessionFactory、Query等,它们用于处理数据库交互。学习这些接口的使用是掌握Hibernate的关键。 5. 对象的三种状态: Hibernate中,对象有...

    hibernate核心代码

    下面将详细讲解Hibernate的核心代码及其相关知识点。 1. **配置文件**: Hibernate的核心配置文件是`hibernate.cfg.xml`,其中包含了数据库连接信息、方言设置、缓存配置等。例如: ```xml <hibernate-...

    hibernate学习笔记

    #### 六、Hibernate核心开发接口深度剖析 - **API概览**:深入研究Hibernate API文档,重点关注`Configuration`、`SessionFactory`、`Session`、`SchemaExport`(用于自动建表)和`Query`接口的功能与使用方法,这些...

    Hibernate 核心类库

    《Hibernate核心类库详解》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层数据存储。本篇文章将详细探讨`hibernate-release-...

    hibernate开发jar包

    3. **Hibernate核心jar包**:主要包含以下组件: - **hibernate-core.jar**:这是Hibernate的基础库,包含了所有核心功能,如实体管理、session工厂、缓存管理等。 - **hibernate-entitymanager.jar**:提供了JPA...

    hibernate 3.1 开发包 下载

    1. Session接口:它是Hibernate的主要工作接口,负责对象的持久化、检索、更新和删除。 2. Configuration类:配置Hibernate,加载并解析Hibernate配置文件,创建SessionFactory。 3. SessionFactory:创建Session...

    hibernate 核心技术

    【hibernate核心技术】主要涉及的是Java开发中的两个重要框架:Struts和Hibernate。这两个框架在企业级应用开发中有着广泛的应用,它们分别是MVC(Model-View-Controller)架构模式中的控制器和持久层解决方案。 ...

Global site tag (gtag.js) - Google Analytics