hibernate的一些基本的认识

  1. 1.       hibenate是一个框架(framework
  2. 2.       hibernate是一个orm框架
  3. 3.       orm(object relation mapping)对象关系映射框架
  4. 4.       hibernate处于我们项目的持久层位置(正因为如此,所以有人又把hibernate称为持久层框架)
  5. 5.       hibernate实际上就是对jdbc进行了轻量级的分装      

  把对象持久化:  把对象的信息保存到数据库或者是文件.

 

  1. 6.       hibernate的基础还是java的反射机制

 

总结:  hibernate是对jdbc进行轻量级封装的orm框架,充当项目的持久层。

为什么需要Hibernate

快速入门案列:

Hibernate可以用在j2eeweb)项目 , 亦可以用于j2se项目中。

我们使用手动配置hibernate方式开发一个hibernate项目,完成crud操作,开发流程:

开发流程:

  1. 1.       创建一个项目
  2. 2.       画出一个简单的项目框架示意图
  3. 3.       引入一个hibernate开发包(从网上下载)
  4. 4.       开发hibernate项目有三种方式:{
    1. 1.       由Domain object àMappingàdb.(官方推荐)
    2. 2.       由DB开始,用工具生成mapping和Domain pbject.(使用较多)
    3. 3.       由映射文件开始。

}

使用第二种方式开发项目

    创建employ表,

5. 开发domain对象和对象关系映射文件

对象关系映射文件,作用是用于指定domain对象和表的映射关系,该文件的取名有规范domain文件。  Hbm.xml.一般我们放在和domain对象同一个文件夹下(包下)

 

 创建一个序列,j将来进行必要的增长…..

  <class name="Employee.java" table="employee">
<!-- id元素用于指定主键属性 -->
<id name="id" column="id" type="java.lang.String">
<!-- 该元素用于指定主键生成策略 hilo native increment sequence -->
<!--
<generator class="sequence">
<param name="sequence">emp_seq</param>
</generator>
-->
</id>
<property name="id" type="java.lang.String">
<column name="id" not-null="false" />
</property>
<property name="name" type="java.lang.String">
<column name="name" not-null="false" />
</property>
<property name="email" type="java.lang.String">
<column name="email" not-null="false" />
</property>
<property name="hibernate" type="java.util.Date">
<column name="hibernate" not-null="false" />
</property>
</class>
  1. 1.       手动配置我们的hibernate.cfg.xml文件,该文件由于配置连接数据库的类型,driver,用户名,密码,url……,该文件的名称,我们一般不修改,

  

   <session-factory>
<!-- hibernate 设计者,给我们提供了一些常用的配置 --> <!-- 配置使用的driver -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 配置使用的url -->
<property name="connection.url">jdbc:mysql://localhost:3306/bigweb</property> <!-- 配置使用的username -->
<property name="connection.username">root</property> <!-- 配置使用的password -->
<property name="connection.password">123</property> <!-- 配置dialect方言,明确告诉连接那种数据库 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 添加一个映射文件 -->
<mapping resource="com/gxj/domain/Employee.hbm.xml"/> </session-factory>
  1. 1.       测试文件TestMain.java
  2.   public class TestMain {
    /**
    * @param args
    */
    public static void main(String [] args){
    //我们使用hibernate完成crud操作[这里我们只见对象,不见表]
    //现在我们不是用Service,直接测试
    //1,创建configuration,该对象用于读取hibernate.cfg.xml,并完成初始化
    Configuration configuration = new Configuration().configure();
    //2.创建SessionFactory[这是一个会话工厂,是一个重量级的对象]
    SessionFactory seesionFactory = configuration.buildSessionFactory();
    Session session = seesionFactory.openSession();
    //4.对hiberate而言,要求程序员,在进行crud的时候,使用事务提交,否者不生效
    Transaction transaction = session.beginTransaction();
    //3.创建Session相当于jdbc Connection [servlet HttpSession,也不是jsp Session]
    //添加一个雇员
    Employee employee= new Employee();
    employee.setId("1");
    employee.setName("龚细军");
    employee.setEmail("1005267096@qq.com");
    employee.setHibernate(new Date());
    //insert.........
    //保存
    session.save(employee);
    //提交
    transaction.commit();
    session.close();
    }
    1. 1.       现在我们来体验一下hiberbate切换数据的便利之处。
    2. 2.       这次我们使用,让hibernate自动完成 domain->映射文件->表的工作
    3. 3.       现在我们来重新配置hibernate.cfg.xml文件
    4.  <hibernate-configuration>
      <session-factory>
      <!-- hibernate 设计者,给我们提供了一些常用的配置 --> <!-- 配置使用的driver -->
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 配置使用的url -->
      <property name="connection.url">jdbc:mysql://localhost:3306/bigweb</property> <!-- 配置使用的username -->
      <property name="connection.username">root</property> <!-- 配置使用的password -->
      <property name="connection.password">123</property> <!-- 配置dialect方言,明确告诉连接那种数据库 -->
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
      <!-- 让mysql自动给我们创建表 ,create,表示如果没有该表则创建,如果有,删除后,再创建-->
      <!-- 对于update,如果有这个表,而却表的结构没有发生变化,则不创建,否则创建,如果没有表则创建新表 --> <property name="hbm2ddl.auto">update</property>
      <!-- 添加一个映射文件 -->
      <mapping resource="com/gxj/domain/Employee.hbm.xml"/> </session-factory>
      1. </hibernate-configuration>
 2.    对对象映射文件,做了相应的修改
<!-- id元素用于指定主键属性 -->
<!-- 对主键生成策略,我们做了修改 -->
<id name="id" column="id" type="java.lang.Integer">
<!-- 该元素用于指定主键生成策略 hilo native increment sequence -->
<!--
<column name="id" not-null="false" />
<generator class="sequence">
<param name="sequence">emp_seq</param>
</generator>
-->
<generator class="increment"></generator>
</id>
1.

  1. 1.       对于第一种,表现层—>业务逻辑层—》db  这样一种结构的耦合性比较强、
  2. 2.       对于第二种。表现层à业务逻辑层—>数据持久层-àmysql_db  这种结构的数据耦合性比较低。不直接对数据库进行操作、

  1. 1.   hibernate的基本概念:

hibernate是轻量级的orm框架.orm全称是object/relation mapping [对象/关系 映射]

O : object –业务层(只对对象进行操作)

R: reletion—关系数据库

M:mapping---对象关系映射文件

                                              

------什么是POJO类? 它有什么要求?

 

  1. 1.       pojo类是和一张表映射的  --》简单的java对象、普通的javaBean
  2. 2.       一般我们放在com.xxx.domain
  3. 3.       Pojo需要一份主键属性(用于标示一个pojo对象)
  4. 4.       除了主键属性外,它应当还有其他属性,(属性一般的访问权限是私有的(private
  5. 5.       提供get/set方法
  6. 6.       他应当有一个无参的构造方法(hibernate反射)
  7. 7.       Pojo类其实就是一个javaBean,有些人将pojo也称之为Data对象.

除了Hibernate 这个orm框架,还有一些:
   Apache ojb /toplink/ibatis/ejb cmp 
这些都是orm框架

Configuration类:

(1).负责管理hibernate的配置信息

(2).读取hibernate.cfg.xml

(3).加载hibernate.cfg.xml配置文件中配置的驱动,url,用户名,密码,连接池。

(4).管理,*.hbm.xml对象关系文件。

 

Hibernate.cfg.xml文件

  1. 1.     该文件主要用于指定各个参数。是hibernate核心文件
  2. 2.    默认放在src目录下,也可以放在别的目录下、   
  3. 3.     指定连接数据库的驱动,用户名,密码,url,连接池
  4. 4.     指定对象关系映射文件的位置
  5. 5.     也可使用hibernate.properties文件来替代该文件。(推荐使用hibernate.cfg.xml
  6. 6.     Hibernate.properties文件:作用和Hibernate.cfg.xml文件一致
  7. 7.     对象关系映射文件(.hbm.xml
    1. 1.     该文件主要作用是建立表和类的映射关系,是不可或缺的重要文件。
    2. 2.     一般放在其映射的类同一目录下,但是不是必须的。
    3. 3.     命名方式一般是:类名.hmb.xml.,但是不是必须。
      1. 1,这里我们讨论一个通过SessionFactory获取Session的两个方法,openSession()一个getCurrentSession();

        1. 1.     openSession()是获取一个新的Session()
        2. 2.     getCurrentSession()获取和当前线程绑定Session,换言之,在同一个线程中,我们获取的session是通过一session,这样可以利于事务控制
        3.  

web基础之hibernate(一篇)的更多相关文章

  1. Java Web基础 --- Servlet 综述(理论篇)

    摘要: Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.本文首先从请求/响应架构应用的大背景谈起 Servlet 的由来,明确 Ser ...

  2. web基础之Structs(一篇)

           为什么有 struts 框架             Struct 的优点之处: 1.       struct的好处 2.       程序更加规范化 3.       程序的可读性提 ...

  3. 框架基础之Hibernate简介

    框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来 ...

  4. Java Web项目实战第1篇之环境搭建

    写在前面的话 从今天开始一个Java Web实战项目,参考自 http://blog.csdn.net/eson_15/article/details/51277324 这个博客(非常感谢博主的分享精 ...

  5. HT for Web基础动画介绍

    在上一篇<基于HT for Web矢量实现3D叶轮旋转>一文中,我略微提了下HT for Web基础动画的相关用法,但是讲得不深入,今天就来和大家分享下HT for Web基础动画的相关介 ...

  6. (0)写给Web初学者的教案-----Web基础

    0,Web基础 一.    What is the Web? Can It Eat? 很多同学可能都听说过一个名词叫做“Web”,这个词隐隐约约好像和我们上网相关.但是呢,又很难说的清楚.我们今天每位 ...

  7. 十倍效能提升——Web 基础研发体系的建立

    1 导读 web 基础研发体系指的是, web 研发中一线工程师所直接操作的技术.工具,以及所属组织架构的总和.在过去提升企业研发效能的讨论中,围绕的主题基本都是——”通过云计算.云存储等方式将底层核 ...

  8. web进修之—Hibernate起步(1)(2)

    想开始写博客了,尝试了CSDN和cnblog之后还是觉得cnblog更加简洁.专注(不过cnblog不支持搬家),所以把刚刚写的两篇学习博客链接放在这儿,这样这个系列也算是完整了: web进修之—Hi ...

  9. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安

    CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程 ...

随机推荐

  1. CodeForces 454C Little Pony and Expected Maximum

    Little Pony and Expected Maximum Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I6 ...

  2. FreeSWITCH第三方库(视频)的简单介绍(二)

    FreeSWITCH使用了大量的第三方库,本文档主要介绍视频相关库的信息: 音频相关库的信息介绍参考:http://www.cnblogs.com/yoyotl/p/5486753.html 其他相关 ...

  3. [SAP ABAP开发技术总结]选择屏幕——SELECT-OPTIONS

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. hdu 3934&&poj 2079 (凸包+旋转卡壳+求最大三角形面积)

    链接:http://poj.org/problem?id=2079 Triangle Time Limit: 3000MS   Memory Limit: 30000K Total Submissio ...

  5. So easy Webservice 3.使用HttpClient工具调用Webservice接口

    首先,看看webservice服务调用演示: a) 登录http://www.webxml.com.cn b) 单击手机查询服务 c) 选择要调用的方法 例如: getMobileCodeInfo 输 ...

  6. Codeforces Round #382 (Div. 2) D. Taxes 歌德巴赫猜想

    题目链接:Taxes D. Taxes time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. Codeforces Round #377 (Div. 2) D. Exams 二分

    D. Exams time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  8. phpcms 在后台增加了一个模型的话,在数据库中就会相应的增加数据库表

    在phpcms后台管理系统中,我们如果增加一个新的模型的话,例如名为:测试模型,英文名:test 在添加完成后,我们在数据库中发现增加了两个数据表:v9_test,v9_test_data;

  9. ubuntu 安装遇到黑屏

    1.安装了ubuntu之后,进入登录页面,然后用输入密码后就黑屏了,按ctrl+alt+f1都没用,也进不去命令界面,查找资料后发现是必须在虚拟机->设置->硬件->显示器,上把加速 ...

  10. hibernate对象关系实现(三)多对多实现

    单向n-n:(catogory-item)一个类别对应多个条目,一个条目对应多个类别 a.以类别类中有条目的集合的引用为例: b.数据库中的体现:建立一个新表,以类别和条目的主键关联的外键做新表的联合 ...