zoukankan      html  css  js  c++  java
  • hibernate---简介

    Hibernate简介

    Hibernate在开发中所处的位置

     

    ORM映射

    Object :面向对象领域的

    Relational:关系数据库领域的

    Mapping:映射

    Object Relational

    Hibernate:就是让程序员通过操作对象的方式来操作数据库中的表。

    Hibernate的执行过程

    Hibernate中的常用接口和类

    Configuration

    作用:加载Hibernate的配置文件

    配置方式

    classpath中建立一个hibernate.properties的配置文件。

     

    自由指定映射文件:

     

    自由指定加载的实体类:

     

    ·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

    SessionFactory(重点)

    Configuration通过加载配置文件创建该对象。

    SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存

    预定义SQL语句:(注意如果有多个映射文件,每个映射文件都会有这4条预定义SQL语句)

    select * from students where id=? //根据主键查询

    insert into students (name,age,birthday) values(?,?,?); //全字段插入

    update students set name=?,age=?,birthday=? where id=? //根据主键全字段更新

    delete from students where id=? //根据主键删除

    一个SessionFactory实例对应一个数据库,应用从该对象中获得Session实例。

    SessionFactory线程安全的,意味着它的一个实例可以被应用的多个线程共享。

    SessionFactory重量级的,意味着不能随意创建或销毁它的实例。如果只访问一个数据库,只需要创建一个SessionFactory实例,且在应用初始化的时候完成。

    SessionFactory需要一个较大的缓存,用来存放预定义的SQL语句及实体的映射信息。

    另外可以配置一个缓存插件,这个插件被称之为Hibernate二级缓存(后续会详解二级缓存),被多线程所共享

    ·SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

    结论:一般应用使用一个SessionFactory,最好是应用启动时就完成初始化。

    Session 非常重要。使用率非常高

    不是线程安全的。应避免多个线程使用同一个Session实例。

    Session是轻量级的,它的创建和销毁不会消耗太多的资源。应为每次客户请求分配独立的Session实例

    Session有一个缓存,被称之为Hibernate的一级缓存。每个Session实例都有自己的缓存。

    Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。

    Transaction:事务管理

    Hibernate应用通过它声明事务边界,有助于在不同的环境或容器中进行移植。

     

    开启事务:Transaction tx = session.beginTransaction();//开启事务

    tx.commit()事务提交 tx.rollback()事务回滚

    ·Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

     

    ·Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。


     
      
     

    JavaBean编写规范:

    a、类一般是public

    b、有默认的构造方法

    c、字段都是私有的

    d、提供公有的gettersetter方法

    e、一般都实现java.io.Serializable接口

    注意:hibernate采用的暴力反射

    派生属性

    概念:

    实体类中的某些属性在数据库表中没有对应的字段,该属性的值是由数据库表中其他字段计算出来的。这样的属性叫做派生属性。

  • 相关阅读:
    如何简单实现一个react组件
    css实现弹框
    flex实现流式布局
    classnames的简单使用
    css处理内容溢出
    webpack学习
    github+hexo搭建,运行hexo g报错
    (附代码和截图)spring基于注解的java定时任务功能实现
    关于Cookie、session和localStorage、以及sessionStorage之间的区别和联系,超详细
    今天向大家推荐一个很强的编辑器——notepad++,没有插件plugin Manager的解决办法
  • 原文地址:https://www.cnblogs.com/fengru/p/5572370.html
Copyright © 2011-2022 走看看