1. ORM :ORM (Object /Relation
Mapping ): 对象/关系映射(理解)
     1) ORM 主要解决对象 -关系的映射
     2) .ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序猿能够把对数据库的操作转化为对对象的操作。

2. Hibernate 的 HelloWord
     1) . 增加 jar 包:增加到当前项目的 classpath 下
                           
          hibernate-release-4.2.4.F inal\lib\required\*.jar(全部的包)
                                          
          MySQL 的驱动mysql -connector -java -5.1.29 -bin.jar
                                         

     2) . 配置 hibernate 的配置文件: hibernate.cfg.xml
    

①. 利用 hibernate 插件生成 hibernate.cfg.xml


          <?

xml
version ="1.0" encoding="UTF-8"?

>

          <!DOCTYPE
hibernate -configuration PUBLIC
               "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
               "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd ">
          <hibernate-configuration>
               <session -factory >
             
               </session -factory >
          </hibernate-configuration>

     ②. 编辑 hibernate.cfg.xml 文件

     I. 增加链接数据库的基本信息:

         <! -- 配置连接数据库的基本信息 -->
         <property
name ="connection.driver_class" >com.mysql.jdbc.Driver </property >
         <property
name ="connection.username" >root </property >
         <property
name ="connection.password" >123456 </property >
         <property
name ="connection.url" >jdbc :mysql:///hibernate4</property>

     II. 配置 Hibernate 使用的数据库方言:
         每一种数据库使用的基本的语法会有细微的差别,比如分页 MySQL 使用 limit。而 Oracle 使用 rownum。这就须要告诉 Hibernate 底层使用的是哪一种数据库

         <! -- 配置 Hibernate 的数据库方言 -->
         <property
name ="dialect" >org.hibernate.dialect.MySQLInnoDBDialect </property >
  
         注意:方言相应的类来自于 hibernate-release- 4.2.4.Final\project\etc\hibernate.properties 中
    
    III. 编辑 Hibernate 的一般属性

         <! -- 创建数据表的策略(了解,最多使用的值是 update) -->
         <property
name ="hbm2ddl.auto" >update </property >

         > create : 每次执行都会删除上一次的表 ,又一次生成表 , 哪怕二次没有不论什么改变
         > create -drop :会依据 .hbm.xml 文件生成表, 可是SessionFactory 一关闭,  表就自己主动删除
         > update :最经常使用的属性值。也会依据 .hbm.xml 文件生成表 , 但若 .hbm.xml  文件和数据库中相应的数据表的表结构不同 ,
            Hiberante  将更新数据表结构,但不会删除已有的行和列
         > validate : 会和数据库中的表进行比較 , 若 .hbm.xml 文件里的列在数据表中不存在。则抛出异常


         <! -- 是否打印 SQL
-->
         <property
name ="show_sql" >true</property>

         <! -- 是否格式化 SQL
-->
         <property
name ="format_sql" >true</property>

3) . 编写实体类( POJO)及 Hibernate 映射文件: xxx.hbm.xml

    I. 编写一个 POJO :必须包括一个 OID 字段和数据表主键相应。必须有一个无參数的构造器。为字段定义 getter、 setter;非 final 类

    II. 由 hibernate 插件生成 xxx.hbm.xml 文件

    注意:须要对文件进行简单的改动:改动主键生成方式(使用 id 的 generator 子节点的 class 属性配置主键的生成方式, native 表示使用数据库本地的方式来
    生成主键, MySQL 会自己主动的选用 auto_increment。而 Oracle 则使用序列的方式)

    <generator
class ="assigned" /> 改动为 <generator
class="native" />

    III. 在 hibernate 配置文件(hiberante.cfg.xml )中关联 hibernate 持久化类的映射文件
    <mapping
resource ="com/atguigu/hibernate/entities/News.hbm.xml" />

4) . 通过 Hibernate
API 完毕持久化操作

    1. 创建 SessionFactory : Session 的工厂类。

SessionFactory 是线程安全的。一般地。在一个 Java 应用中仅仅有一个 SessionFactory 实例

        Configuration configuration = new
Configuration ().configure ();
        ServiceRegistry serviceRegistry = new
ServiceRegistryBuilder().applySettings( configuration.getProperties())
                                                      .buildServiceRegistry ();
        SessionFactory sessionFactory = configuration.buildSessionFactory (serviceRegistry );

    2. 创建 Session : 表示 Hibernate 应用程序和数据库的一次会话
        Session session = sessionFactory.openSession ();

    3. 开启事务
        Transaction transaction = session.beginTransaction ();

    4. 运行持久化操作
         //save
         //session.save (news );

         //利用 OID 载入对象
        News news2 = (News ) session.get (News.class , 1);
        System.out.println (news2 );
        news2.setContent ("myBatis" );

    5. 提交事务
        transaction.commit ();

    6. 关闭 Session
        session.close ();

    7. 关闭 SessionFactory
        sessionFactory.close ();
        


    ★写測试类的时候一般採用注解更方便些:
        public class Testing {
            private SessionFactory sessionFactory ;
            private Session session ;
            private Transaction transaction = null ;
            
            @Before
            public void init (){
                Configuration configuration = new
Configuration ().configure ();
                ServiceRegistry serviceRegistry = new
ServiceRegistryBuilder().applySettings( configuration.getProperties()).buildServiceRegistry();
                sessionFactory = configuration.buildSessionFactory (serviceRegistry );
                
                session = sessionFactory.openSession ();
                transaction = session.beginTransaction ();
             }
            
            @After
            public void destroy (){
                transaction.commit ();
                session.close ();
                sessionFactory.close ();
             }
            
            @Test
            public void test (){
                //測试部分
             }
         }      
        

Hibernate基础-HelloWord的更多相关文章

  1. hibernate基础dao类

    此文章是基于 搭建SpringMVC+Spring+Hibernate平台 功能:数据库的保存.更新.删除:sql.hql查询:分页查询:调用存储过程 创建hibernate基础dao类: BaseD ...

  2. hibernate基础(1)

    hibernate基础1.hibernate介绍与动手入门体验  问题:模型不匹配(java对象模型与数据库关系模型不匹配)  解决: 1.使用JDBC手工转换        2.使用ORM(Obje ...

  3. Hibernate.基础篇《二》. getOpenSession() 和 getCurrentSession() - 1

    Hibernate.基础篇<二>. getOpenSession() 和 getCurrentSession() - 1 说明: 在Hibernate应用中,Session接口的使用最为广 ...

  4. Hibernate.基础篇《一》.Hibernate工具类.

    Hibernate.基础篇<一>.Hibernate工具类. 话述: Hibernate.基础篇第一篇,前面是代码.后面再加理论&实践. Hibernate使用的版本是:5.x,在 ...

  5. Hibernate学习笔记2.1(Hibernate基础配置)

    Hibernate基础配置 1.<property name="hbm2ddl.auto">update</property> 在SessionFactor ...

  6. Hibernate入门1. Hibernate基础知识入门

    Hibernate入门1. Hibernate基础知识入门 20131127 前言: 之前学习过Spring框架的知识,但是不要以为自己就可以说掌握了Spring框架了.这样一个庞大的Spring架构 ...

  7. Hibernate基础学习2

    Hibernate基础学习2 测试hibernate的一级缓存,事务以及查询语句 1)Hibernate的一些相关概念 hibernate的一级缓存 1)缓存是为了提高该框架对数据库的查询速度 2)一 ...

  8. Hibernate 基础配置及常用功能(三)

    本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...

  9. Hibernate基础学习(五)—对象-关系映射(下)

    一.单向n-1 单向n-1关联只需从n的一端可以访问1的一端. 域模型: 从Order到Customer的多对一单向关联.Order类中定义一个Customer属性,而在Customer类不用存放Or ...

随机推荐

  1. [题解] cogs 2240 架设电话线路

    http://cogs.pro:8080/cogs/problem/problem.php?pid=2240 与洛谷P2885几乎一致,https://www.luogu.org/problemnew ...

  2. 5.1 qbxt 一测 T1

    禁咒检验 (3MB / 2s)[问题描述] 在古老的世界里,有一个神奇的职业叫做魔法师. 魔法师的特点是会魔法,施放魔法需要念咒语. 在古老的世界里,有一个神奇的职业叫做码农.码农的工作是帮助魔法师记 ...

  3. CodeForces - 930A Peculiar apple-tree(dfs搜索)

    题目: 给出一个树,这棵树上每个结点每一秒都会结出一颗果实,果实每经过一秒就会落向下一个结点,如果一个结点在同一时刻上的果实两两抵消,问最后在根节点处一共有多少个果实. 思路: dfs直接搜索统计这棵 ...

  4. More Effective C++ - 章节二 : 操作符(operators)

    5. 对定制的 "类型转换函数" 保持警觉 允许编译器执行隐式类型转换,害处多过好处,不要提供转换函数,除非你确定需要. class foo { foo(int a = 0, in ...

  5. CF633H Fibonacci-ish II

    题目描述 题解: 坑题搞了三天. 莫队+线段树. 还有一些和斐波那契数列有关的性质. 首先答案是$a_1f_1+a_2f_2+…+a_nf_n$, 考虑插进去一个元素对答案产生的影响. 比如插进去一个 ...

  6. sed之h;H和:a;N;ba使用精解(对段落进行操作)

    1) 文本: Handle 0x0058, DMI type 20, 19 bytes Memory Device Mapped Address         Starting Address: 0 ...

  7. PS学习笔记(04)

    Photoshop滤镜的安装 Photoshop滤镜的默认格式为.8bf(也有些滤镜为exe格式的可执行文件),如果你下载的是压缩包,请解压之后再安装. 方法一: 如果你下载的滤镜为exe的可执行文件 ...

  8. 大数据学习——修改主机名和ip的映射关系

    vi /etc/hosts 192.168.1.101 itcast

  9. 【shell】通过shell编写ping包及arp的监控并发送短信

    1 #!/bin/bash 2 NOW="`date +%Y%m%d-%H:%M:%S`" 3 PHONES=15134567893 4 IP=10.100.8.78 5 GATE ...

  10. SPOJ1812 - Longest Common Substring II(LCS2)

    Portal,Portal to 洛谷 Description 给出\(n(n\leq10)\)个仅包含小写字母的字符串\(s_1..s_n(|s_i|\leq10^5)\),求这些字符串的最长公共子 ...