【Hibernate】1.Hibernate基础概念

一、Hibernate介绍
Hibernate是一个持久化框架,是一个ORM框架。hibernate是对jdbc进行轻量级封装的orm框架。
持久化:就是和数据库相关的操作,包括增删改查等操作。

ORM:对象关系映射。将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。

1).Hibernate是一个面向Java环境的对象/关系数据库映射工具,对象/关系数据库映射(object/relational mapping (ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。
2).Hibernate不仅仅管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。
3).Hibernate使得与数据持久化相关的编程任务简化。
4).所有的持久化类(persistent classes)都要求有无参的构造器,因为Hibernate必须使用Java反射机制来为你创建对象。构造器(constructor)的访问级别可以是private,然而当生成运行时代理(runtime proxy)的时候则要求使用至少是package 级别的访问控制,这样在没有字节码指令(bytecode instrumentation)的情况下,从持久化类里获取数据会更有效率。
         a.Hibernate开发准备


b.Hibernate开发步骤


有此图可得出Hibernate使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象)。
*.hbm.xml默认与javabean在同一目录下;hibernate.cfg.xml
c.Hibernate与传统JDBC开发区别

c.java应用中使用Hibernate

①创建Hibernate的配置文件,

②创建持久化类,

③创建对象-关系映射文件,

④通过Hibernate API 编写访问数据库的代码


二.Hibernate基础语义
1.Configuration
    Configuration类负责管理Hibernate的配置信息,Hibernate运行时需要获取一些底层实现的基本信息,包括:数据库连接信息(URL、驱动类、用户、密码),数据库其他配置信息(dialect等配置),这些属性可以在Hibernate配置信息中查看(hibernate.cfg.xml).
    当我们调用:
        Configuration config = new Configuration().configure();  
时,Hibernate会自动在当前项目中搜索hibernate.cfg.xml文件并加载至内存中,作为后续操作的基础配置,主要用来获取SessionFactory,之后就无须操作该类了。
    也可以指定配置文件的位置。
        File file = new File("...");                                                 
        Configuration config = new Configuration().configure(file);
 
2.2.SessionFactory
    SessionFactory负责创建Session实例,可通过Configuration实例构建SessionFactory:
        Configuration config = new Configuration().configure();           
        SessionFactory sessionFactory = config.buildSessionFactory();
    config会根据当前的数据库配置信息,构造SessionFactory实例并返回,构造完毕后,即被赋予了特定的配置信息。之后config的任何变更都不会影响以创建的Sessionfactory实例,如需要改动后的SessionFactory,则要重新构建SessionFactory实例,若有多个数据库,要针对每个数据库分别创建对应的SessionFactory实例。
    Sessionfactory创建复杂而又昂贵,要考虑重用策略,由于Sessionfactory采取了线程安全的设计,可由多个线程并发调用, 大多数情况下,一个应用中针对一个数据库共享一个Sessionfactory实例即可。

 一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例。即 应用初始化时创建sessionFactory,其作用就是每个请求到达后创建一个session。SessionFactory特点为:
a.SessionFactory是线程安全的,说明它的同一个实例可以被应用的多个线程共享;
b.是重量级的,不能随意创建和销毁它的实例,若应用只访问一个数据库,则只需创建一个SessionFactory实例,若访问多个数据库,则需为每个数据库创建一个单独的SessionFactory实例。
2.3.Session
    Session是Hibernate持久化操作的基础,这里的Session与Web层的HttpSession并没有什么关系。 Hibernate Session之于Hibernate就相当于JDBC Connection相对于JDBC。
    

Hibernate Session的设计是非线程安全的,即一个Session实例同时只能由一个线程使用。
        SessionFactory sessionfactory = config.buildSessionFactory();
        Session session = sessionFactory.openSession();                   
    Session被称为持久化管理器,提供了持久化的相关操作。获得session之后我们就可以调用Session所提供的save、get、delete等方法完成持久层操作。
    Hibernate3中通过Query或Criteria接口进行数据查询。

 1.Session 接口是 Hibernate 向应用程序提供的操纵数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载 Java 对象的方法。Session 具有一个缓存, 位于缓存中的对象称为持久化对象, 它和数据库中的相关记录对应..
Session的get()和load()方法的区别:
区别:
–当数据库中不存在与 OID 对应的记录时, load() 方法抛出 ObjectNotFoundException 异常, 而 get() 方法返回 null
–两者采用不同的延迟检索策略


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值