Hibernate 总结(一):HelloWorld

1. ORM: ORM(Object/Relation Mapping): 对象/关系映射 (理解)

     1). ORM 主要解决对象-关系的映射

          

     2) .ORM的思想 将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。

2. ORM 架构图:ORM 框架在开发中是一个什么样的地位(了解)

         
3. Hibernate 的 helloworld

1). 加入 jar 包:加入到当前项目的 classpath 下

hibernate-release-4.2.4.Final\lib\required\*.jar

MySQL 的驱动

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" > mysql  </ 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) -->

            <!-- 配置   hibernate   的一些基本属性 -->
     
              <!-- 创建数据表的策略 -->
            < property   name = "hbm2ddl.auto" > update </ property >
            <!-- 是否打印 SQL -->
            < property   name = "show_sql" > true </ property >
            <!-- 是否格式化 SQL -->
            < property   name = "format_sql" > true </ property >

                     > create: 每次运行都会删除上一次的表 ,重新生成表, 哪怕二次没有任何改变 
                     > create-drop:会根据 .hbm.xml 文件生成表, 但是SessionFactory一关闭,  表就自动删除
                     >  update:最常用的属性值, 也会根据 .hbm.xml 文件生成表, 但若 .hbm.xml  文件和数据库中对应的数据表的表结构不同,   
                         Hiberante  将更新数据表结构,但不会删除已有的行和列
                     > validate : 会和数据库中的表进行比较, 若 .hbm.xml 文件中的列在数据表中不存在,则抛出异常

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 持久化类的映射文件

<!-- 关联 hibernate 映射文件 -->
      < mapping  resource =  "com/entities/News.hbm.xml"  />

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

public  class  Main {
      public  static  void  main(String[] args) {
           News news =  new  News();
           news.setAuthor(  "lizhenwei" );
           news.setContent(  "Hibernate" );
           news.setContent(  "java-ORM" );

             // 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);
           
             // 5. 提交事务
           transaction.commit();
           
             // 6. 关闭 Session
           session.clear();
           
             // 7. 关闭 SessionFactory
           sessionFactory.close();
     }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值