zoukankan      html  css  js  c++  java
  • Hibernate框架_1 单表映射

    2017/03/21 Hibernate框架--From IMOOC
    ORM:(Object/Relationship Mapping):对象/关系映射
    利用面向对象的思想编写的数据库应用程序最终都是把对象信息保存在关系型数据库中,
    于是要编写很多和底层数据库相关的SQL语句。-与面向对象思想格格不入!

    写SQL有什么不好?
    1.不同的数据库使用的SQL语法不同。比如PL/SQL(Oracle) 与T/SQL(微软的标准)
    2.同样的功能在不同的数据库中有不同的实现方式。比如SQL分页(Oracle:row number,mySql:limit)
    3.程序过分依赖SQL对程序的移植以及扩展,维护带来很大的麻烦。

    ORM框架技术:使程序员抛弃SQL,使用面向对象思想。
    Hibernate:JAVA领域的一款开元的ORM框架技术。
     Hibernate对JDBC进行了轻量级的对象封装。

    例子:
    Java应用1(业务逻辑层)  Java应用2(业务逻辑层)   Java应用3(业务逻辑层)
     |                  |                        |
     ----------------------------------------------------------------
            |
         持久化层(Hibernate) 

            |
     ----------------------------------------------------
     |          |                    |
    数据库1          数据库2            数据库3

    ================第一个Hibernate例子==============================

    第一个Hibernate例子-插件
    ·开发工具:Eclipse Standard Kepler
    ·Hibernate Tools for Eclipse Plugins
    ·Hibernate Tools 是由JBoss推出的一个Eclipse综合开发工具插件,
    该插件可以简化ORM框架Hibernate,以及JBoss Seam,EJB3等的开发工作。
    插件安装:Eclipse -HELP-Install New Software -Add ,Archive(找到Hibernate Tools安装包),Name 随便起,OK-勾选-next
     安装完成后,重启,在File-new-other-出现Hibernate选项,表明安装成功

    第一个Hibernate例子-步骤
    ·1) 创建Hibernate的配置文件hibernate.cfg.xml
    ·2) 创建持久化类(实体类,并遵循java Bean设计规范) 实体类与数据库中的表一一对应

      (实体化类文件夹一般叫entity,遵循javabean:实现implements Serializable接口)
    ·3) 创建对象-关系映射文件(·生成的关系映射文件加到hibrnate cfg file
             <session-factory>
          ...property...
           <mapping resource="Students.hbm.xml"/>
         </session-factory>
    ·4) 通过Hibernate API编写访问数据库代码
    (*使用版本* HIBERNATE4.2.4 + MySql6.0)

    ·导入Hibernate必须的jar包
     hibernate-release-4.2.4.finallib equired
    ·导入MySQL的JDBC驱动
     mysql-connector-java-5.1.7-bin.jar

    ·导入Junit4的jar包(单元测试工具)
     junit-4.10.jar

    第一个Hibernate例子-创建Hibernate工程
    1)新建Java Project
    2)自定义jar包(自定义并导入):windows-Preference-Java -Build Path -User Libraries_:
     New1(hibernate-core(命名hibernate-core) _ Add External JARs)
     New2(Junit4 _ Add External JARs:unit-4.10.jar)
     New3(mysql-jdec _ Add External JARs:mysql-connector-java-5.1.7-bin.jar)
    3) 在工程中导入:
     project-Properties-Build Path -Libraries:
      Add Library-User Library:
          勾选2)创建的三个包_finish_OK

    ====================创建Hibernate的配置文件============================

    第一个Hibernate例子-创建Hibernate的配置文件
    ·hibernate Tools会自动生成配置文件
     如果编辑时Eclipse没有出现代码自动提示功能的话 需要导入dtd文档的支持,该dtd文档在一下目录中
     hibernate-release-4.2.4Finalprojecthibernate=coresrcmain esourcesorghibernatehibernate=-mapping-3.0.dtd
     Project选中-src选中-right click-new-Other:
      HibernateHibernate Configuration File(cfg.xml)-next-next-(Session factory name 暂时不创建)-Finish


    ·配置文档的属性标签:
    <!--声明Hibernate配置文件的开始-->      
    <hibernate-configuration> 
        <!--表明以下的配置是针对session-factory配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存HIbernate的配置信息,以及对Session的操作--> 
        <session-factory>
     <!--mysql默认用户名是root>
     <property name="hibernate.connection.username">root</property> 
     <!--连接数据库是密码--> 
     <property name="hibernate.connection.password"></property>
     <!驱动Mysql>
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver </property> 
     <!--connection.useUnicode连接数据库时是否使用Unicode编码--> 
     <!--connection.characterEncoding连接数据库时数据的传输字符集编码方式,最好设置为gbk,用gb2312有的字符不全--> useUnicode=true避免出现中文乱码
     <property
     name="connection.url">jdec:mysql:///hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property> 
     dialect方言<!--hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。--> 
     <property name="dialect">org.hibernate.dialect.MySQLDialect </property>
     <property name="show_sql">true</property>
     <property name="format_sql">true</property>
     <property name="hbm2ddl.auto">create</property>

    ====================================

    第一个Hibernate例子-创建持久化类:遵循Java Bean设计原则
    1)公有的类
    2)提供共有的不带参数的默认constructor
    3) 属性私有
    4)getter/setter封装
       (Eclipse -> source->right click->Source->Generate Getters and Setters)
       为便于测试,做一个toString()方法(推荐所有的持久化类都做一个toString())
       (Eclipse -> source -> right click -> Source -> Generate toString())
       Students.java

    3)第一个Hibernate例子-关系映射文件和数据库
    ·Project选中-src选中-right click-new-Other->Hibernate:
     Hibernate XML Mapping file(hbm.xml)->next->next->select Class->Finish
            create Students.hbm.xml
    ·生成的关系映射文件加到hibrnate cfg file
             <session-factory>
      ...property...
      <mapping resource="Students.hbm.xml"/>
     </session-factory>
    ·新建数据库
     字符集:utf8--UTF-8 Unicode :为了支持国际化和防止中文乱码
     排序规则:utf8_general_ci
    ·
    4)第一个Hibernate例子-使用Junit测试
    介绍注解标签:
    ·@Test:测试方法
    ·@Before:初始化方法
    ·@After:释放资源
    顺序 before test after

    ·建立一个源程序文件夹test(source folder)
    package org.Junit.test
    public calss Student{


     private SessionFactory sessionFactory;
     private Session session;
     private Transaction transaction;
     @Before
     public void init(){
      // 创建配置对象
      Configuration config = new Configuration().configure();
      //创建服务注册对象
      ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()applySettings(config.getProperties()).buildServiceRegistry();
      sessionFactory  = conf.buildSessionFactory(serviceRegistry );//创建会话工厂对象
      
      session = serviceRegistry .openSession();//打开会话
      transaction  = session.beginTransaction();//打开事务
     }

     @After
     public void destory(){
      transaction.commit()//提交事务
      session.close();
      sessionFactory.close();
     }

     @Test
     public void testSaveStudents(){
      Stusdents s= new Students(1,"ZSF",new Date(),"wudang");
      session.save(s);//保存对象进入数据库
     }

    }
    第一个Hibernate例子-通过Hibernate API编写访问数据库的代码

    //读取并解析配置文件 创建配置对象
    Configuration config = new Configuration().configure();
    //
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder();

    applySettings(config.getProperties()).buildServiceRegistry();//创建服务注册对象


    sessionFactory  = conf.buildSessionFactory(serviceRegistry );//创建会话工厂对象

     session = serviceRegistry .openSession();//打开会话

    transaction  = session.beginTransaction();//打开事务

  • 相关阅读:
    【html+table】基于jQuery,利用TableFreeze.js实现html的table冰冻效果,非常强大
    vue中使用element-ui实现excel表格导入
    正则第二次配结果与第一次不一致;正则匹配,第一次匹配结果正常,第二次匹配结果就错误,第三次又正常,第四次又错误,以此类推
    关于用vsCode格式化代码时,代码自动换行问题
    百度地图实现测量面积和测量距离功能
    sql 通过group by、sum聚合查询结果的排序
    C#小数计算的坑
    C# 反射的例子
    IE8环境下的上传图片预览
    做移动端电子签名发现canvas的 一些坑
  • 原文地址:https://www.cnblogs.com/charles999/p/6592972.html
Copyright © 2011-2022 走看看