web基础之hibernate(一篇)

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将来进行必要的增长…..

 1  <class name="Employee.java" table="employee">
 2        <!-- id元素用于指定主键属性 -->
 3         <id name="id" column="id" type="java.lang.String">
 4         <!-- 该元素用于指定主键生成策略 hilo native increment sequence -->
 5         <!--
 6         <generator class="sequence">
 7         <param name="sequence">emp_seq</param>
 8         </generator>
 9         -->
10         </id>
11         <property name="id" type="java.lang.String">
12         <column name="id" not-null="false"  />
13         </property>
14         <property name="name" type="java.lang.String">
15         <column name="name" not-null="false"  />
16         </property>
17        <property name="email" type="java.lang.String">
18        <column name="email" not-null="false" />
19        </property>
20         <property name="hibernate" type="java.util.Date">
21        <column name="hibernate" not-null="false" />
22        </property>
23        </class>

  1. 1.       手动配置我们的hibernate.cfg.xml文件,该文件由于配置连接数据库的类型,driver,用户名,密码,url……,该文件的名称,我们一般不修改,

  

 1   <session-factory>
 2        <!-- hibernate 设计者,给我们提供了一些常用的配置 -->
 3
 4        <!-- 配置使用的driver -->
 5        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
 6
 7        <!-- 配置使用的url -->
 8        <property name="connection.url">jdbc:mysql://localhost:3306/bigweb</property>
 9
10        <!-- 配置使用的username -->
11        <property name="connection.username">root</property>
12
13        <!-- 配置使用的password -->
14        <property name="connection.password">123</property>
15
16        <!-- 配置dialect方言,明确告诉连接那种数据库 -->
17        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
18
19        <!-- 添加一个映射文件 -->
20        <mapping resource="com/gxj/domain/Employee.hbm.xml"/>
21
22        </session-factory>

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

         

时间: 2024-10-12 21:15:13

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

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

摘要: Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.本文首先从请求/响应架构应用的大背景谈起 Servlet 的由来,明确 Servlet 的产生动机,并揭示了 Servlet 的本质以及其在标准MVC模式中所扮演的角色.紧接着,给出了 Servlet族的继承结构,并对族内的接口和抽象类作了进一步的介绍,并给出开发一个Servlet程序的常用做法.在此基础上,我们图文并茂地介绍了 Servlet 的生命周期与执行流程,清晰展现

web基础之Structs(一篇)

       为什么有 struts 框架             Struct 的优点之处: 1.       struct的好处 2.       程序更加规范化 3.       程序的可读性提高了 4.       程序的 可维护性增加了 Struct 的不足之处: 1. From表单有点鸡肋 2.action是单态(对网站并发性的处理有影响) -----------框架提高了程序的规范的同时,也约束了程序的自由.   * Structs 为什么有? 因为我们对mvc的理解不同,可能造成

【慕课网】php工程师学习计划之我的学习笔记——01 入门必学web基础 htmlcss基础课程 篇

为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重要,非常感谢慕课网提供本套学习计划,希望更多地学习平台能提供像这样全面一条龙学习思路清晰地教程. 计划图:链接 我的学习状况:2015-07-06 10:29:46 开始随记: php工程师学习计划笔记——01 入门必学web基础 htmlcss基础课程 篇 入门篇: text-align:cent

从Java Web 基础看SSH架构

Java Web开发现在已然成为大型Wed项目的标准,之前一直盲目的使用框架,往往知其然不知其所以然.在经过一段时间的学习与开发,大概掌握了其脉络的基础上,对其做一定总结. 一.Java Web 基础 一个典型的Java Web项目往往包含这些元素:Jsp页面.Servlet.Listener.Filter,以及配置文件web.xml.其中: Jsp和Servlet基本是一回事,主要用来响应客户端的请求.当然Jsp中可以直接嵌入HTML标签,主要还是负责展现. Listener则是负责监听Web

Java Web基础 --- Jsp 综述(上)

摘要: J2EE是一套规范,而Servlet/Jsp是J2EE规范的一部分,是Tomcat的主要实现部分.在最初的应用实践中,当用户向指定Servlet发送请求时,Servlet利用输出流动态生成HTML页面,这导致Servlet开发效率极为低下.JSP技术通过实现普通静态HTML和动态部分混合编码,使得逻辑内容与外观相分离,大大简化了表示层的实现,提高了开发效率.本文以JSP的本质是Servlet为主线,结合JSP转译后所得的Servlet,详细探讨了JSP的原理.执行过程.脚本元素.编译指令

Java Web基础 --- Jsp 综述(下)

摘要: JSP脚本中包含九个内置对象,它们都是Servlet-API接口的实例,并且JSP规范对它们进行了默认初始化.本文首先通过一个JSP实例来认识JSP内置对象的实质,紧接着以基于请求/响应架构应用的运行机制为背景,引出JSP/Servlet的通信方式与内置对象的作用域,并对每个内置对象的常见用法进行深入介绍和总结. 一. JSP 九大内置对象概述及相关概念说明 JSP脚本中包含九个内置对象,这九个内置对象都是 Servlet API 接口的实例,并且JSP规范对它们进行了默认初始化(由 J

Java Web基础 --- Servlet 综述(实践篇)

摘要: 伴随 J2EE 6一起发布的Servlet 3.0规范是Servlet规范历史上最重要的变革之一,它的许多新的特性都极大的简化了 Java Web 应用的开发.本文从一个简单的 Servlet 例子开始,说明了如何开发.配置一个 Servlet.此外,还重点叙述了Servlet的一些新特性,包括Servlet 异步处理.Servlet 非阻塞IO 以及 Servlet 文件上传等内容,以便我们对Servlet有一个更全面的了解. 本篇主要介绍 Servlet 实践方面的知识,更多关注于S

Hibernate入门篇——第一个Hibernate应用

Hibernate入门 第一步: 挑选jar包 在工程下新建lib文件夹,然后将Hibernate基本包复制进去.可以采用Maven来获取这些包: <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.2.7.Final</version> </dependency> 也可

HT for Web基础动画介绍

在上一篇<基于HT for Web矢量实现3D叶轮旋转>一文中,我略微提了下HT for Web基础动画的相关用法,但是讲得不深入,今天就来和大家分享下HT for Web基础动画的相关介绍及用法. 先上一段枯燥的理论知识,大家混个眼熟. 在HT的数据模型驱动图形组件的设计架构下,动画可理解为将某些属性由起始值逐渐变到目标值的过程, HT提供了ht.Default.startAnim的动画函数,其示例代码如下. ht.Default.startAnim({ frames: 12, // 动画帧