zoukankan      html  css  js  c++  java
  • Hibernate (一)hibernate入门

         在总结hibernate这里之前需要和之前接触过的关系模型做一个大概的总结。关系模型中,诸如视图、存储过程的使用,在开发之初也带来很多方便。但随着维护工作的加大,总会出现下面这样几个问题:

     

    1)很多业务逻辑工作交给了视图、存储过程。

    例如:调试一个几十行的视图,嘿嘿,不能这样任性。所以当数据和业务逻辑揉做在一起是在维护时是非常头疼的。

    2)数据库应该对开发者应该是透明的

    这句话怎么讲呢?在学习数据库之初,很多时候既是DBA、也是架构师、也是程序猿。最后我们在编程时不知不觉直接select*t_user ,这样直接操作了数据库表。但是一般情况下是,程序猿是无法知晓数据库结构的。

    3)不利于调试

    其实在第一点中也讲到了,大家肯定有着这样的体会。程序调试了半天,最后发现竟然是存储过程少了个空格。是不是觉得顿时心塞,你懂得。

    之上都是对关系模型在使用过程中的一些感受,而后接触到概念模型之后,发现概念模型在面向对象上更利于我们理解,概念模型大家都知道是在软件分析之初来构建的,用来帮助开发人员之间交流和理解软件的正确需求的,而在软件设计的阶段就需要使用到域模型了。


     

    域模型

     


    域模型分为实体域对象、过程域对象、事件域对象。


     

    实体域对象就是我们生活中常见的,诸如学生、教师、试卷。结合J2EE,可以理解为POJO,何为POJO就是最为干净的实体类,不涉及业务逻辑。

     

    过程域对象指的是咱们系统中的业务逻辑,诸如考试、它们是依托实体域存在的。结合J2EE,就是我们使用的EJB中的sessionbean了,j2se中对应具有行为的javabean了。

     

    事件域这个不怎么理解,看网上的资料讲的是一些系统中自动触发的事件,诸如异常、错误等。


     

    持久化

     

    无论是域模型还是关系模型都是用来持久化数据到硬盘上的,对比之上域模型在和关系模型时,两者在实现上有差别。域模型在内存中为对象,以及对象之间的关系;而关系模型则表现为表和表之间的关系。所以这个持久化就是将数据从内存存储到硬盘的过程,称之为持久化。当然对于域模型来讲,并不是所有的域模型都需要持久到数据库,例如sessionbean就是无需持久到数据库。

     

    持久化的几种模式

     

    Jdbc

     

    在学习java之初我们大多使用的是jdbc来直接操作数据库的。主要是这么几个对象的使用


    drivermanager:负责创建数据库连接
    connection:连接数据库
    statement:执行sql
    preparedStatement:和statement类似,只不过还具有预定义sql语句的功能。
    resultset:结果集。
    示例:
    //获得连接
    Connectionconnection=java.sql.DriverManager.getConnection(url,username,pwd);
    //定义sql语句
    Connection.prepareStatement(strsql);


     

    ORM

     

    对象关系映射,主要解决的还是域模型和关系模型的联系。通常用xml来定义之间的关系,然后相应的orm中间件会参照对应的关系来将制定的域模型来映射到数据库表中。例如:hibernate是主要通过sessionfactory来工作的,sessionfactory在读取映射关系之前会配置对应的sql语句,最后再调用相应的方法执行对应的sql语句。诸如orm的应用很多,hibernate是其中一种,还有toplink等。

     

    以上是最为常用的两种用来持久化模式,都为解决关系模型的出现的一些问题提供好的解决方案。使得开发人员更加更好的理解面向对象的持久化,更多的使用的还是第三方的商业持久化中间件,例如JPA以及hibernate。

  • 相关阅读:
    DBCP,C3P0与Tomcat jdbc pool 连接池的比较
    MySQL:创建、修改和删除表
    MySQL添加用户、删除用户与授权
    王垠 :写给支持和反对《完全用Linux工作》的人们 ( 2004/8/26)
    王垠:完全用Linux工作 (2003)
    王垠:什么是“对用户友好”(2012/05/18)
    顿悟:Linux是拿来用的,不是拿来折腾的
    《从零开始搭建游戏服务器》MySQL安装配置
    ehcache 缓存
    servlet
  • 原文地址:https://www.cnblogs.com/guziming/p/4232661.html
Copyright © 2011-2022 走看看