Hibernate学习笔记

来源:互联网 发布:java面试会考哪些算法 编辑:程序博客网 时间:2024/04/26 04:30

Hibernate学习笔记

hibernate-p

本笔记的内容:

  • 分层体系结构
  • ORM介绍
  • Hibernate简介
  • Hibernate开发步骤
  • Hibernate核心API


分层体系结构

  • 经典的三层结构(图1)

  1. 表现层:提供与用户交互的界面.(例如Swing界面或JSP页面)
  2. 业务逻辑层:实现各种业务逻辑.(例如网店计算用户的等级而实施优惠的计算.并将交易记录保存到数据库.)
  3. 资源层(多位关系型数据库):保存与管理持久业务数据.(例如用户的姓名,年龄…)
  • N层结构(图1)

  1. 在三层中的逻辑层分离出一个数据访问层,从而直接进行数据库的访问

分层体系 图1

  • 分层体系结构的优点缺点

  1. 优:可维护性(修改一部分,不影响其他部分),可重用性(底层代码重用),可管理性(分工合作),可扩展性(容易添加新功能).
  2. 缺:…

面向接口

ORM

  • ORM的全称是Object Relational Mapping,即对象关系映射。对象-关系映射实现了面向对象世界中对象到关 系数据库中的表的自动的(和透明的)持久化,使用元数据(metadata)描述对象与数据库间的映射.简单来说.ORM冲当翻译功能,例如不会说外语的中国人照样可以请个翻译家去泡外国的妞!ORM就是那个翻译家了
  • 理解面向对象世界关系数据库世界:在面向对象世界中,是以对象出现的(类,属性),类对应着数据库的表,而类的属性对应着数据库的字段.

Hibernate简介

  • Hibernate: 它是一种能实现ORM的框架,它提供了强大的对象和关系数据库映射以及查询功能,且是开源(LGPL)的.

Hibernate开发步骤

  • 一 POJO(Plain Old Java Objects) ,有一些属性及其getter setter方法的JavaBeans类,并实现一个默认的构造函数.
  • 二 持久化类和关系数据库的映射:即是编写 *.nbm.xml文件,用于映射数据库的的表(字段)和POJO类(属性).

持久化类和关系数据库的映射
一个学生数据库表对应的映射文件:Student.hbm.xml

  • 三 Hibernate配置文件:默认为hibernate.cfg.xml或hibernate.properties.
    一个hibernate.cfg.xml列子:hibernate.cfg.xml
  • 四 使用Hibernate API:
  1. Configuration:Configuration 类负责管理Hibernate 的配置信息,运行时读取数据库URL,用户名和密码等信息….Hibernate会自动在当前的CLASSPATH 中搜寻Hibernate.cfg.xml文件并将其读取到内存中作为后继操作的基础配置.
    Configuration config = new Configuration().configure();
  2. SessionFactory:会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据.它在多个应用线程间进行共享.通常情况下, 整个应用只有唯一的一个会话工厂.SessionFactory负责创建Session实例.我们可以通过Configuation实例构建SessionFactory:
    Configuration config = new Configuration().configure();
    SessionFactory sessionFactory = config.buildSessionFactory();
  3. Session:Session是持久层操作的基础,相当于JDBC中的Connection.Session实例通过SessionFactory实例构.Transaction:使用Hibernate进行操作时(增,删,改)必须显示的调用Transaction(默认:autoCommit=false).
    Configuration config = new Configuration().configure();
    SessionFactory sessionFactory = config.buildSessionFactory();
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    Student stu=new Student();
    //set value to stu
    session.save(stu);
    tx.commit();

I-Session

Hibernate核心API

Hibernate-api

  • Configuration类:用于配置和启动Hibernate,给Hibernate指定映射文件和Hibernate配置属性,然后创建SessionFactory实例.configuration
  • SessionFactory接口:一个SessionFactory实例对应着一个存储源(同一个数据库的连接),并可产生出Session对象.SessionFactory是线程安全的,可被多个应用线程共享.创建了SessionFactory应不轻易销毁(它是重量级的,有很大的缓存),如果访问多个数据库应该对应着个数建立SessionFactory实例!(看图)SessionFactory
  • Session接口:称为持久化管理器,提供与持久化相关的操作,如添加,更新,删除,加载和查询对象.Session是轻量级线程,使用完应该要销毁.也不是线程安全的,避免多个线程共享同一个Session实例.
  • Transaction接口:Transaction接口是Hibernate的数据库事务接口,对底层的事物接口进行封装(JDBC API,JTA,CORBA).
  • Query和Criteria接口:这两个是Hibernate的查询接口.