• HIbernate入门(一)配置安装


    1,简介
    Hibernate是主要使用在数据库层面的开源对象关系映射框架。hibernate对于JDBC有一个非常轻量级的封装,使得我们可以随心所欲的操作数据库。
    简单解释一下上一句话。对象关系映射是什么意思?对象指的就是POJO持久化对象了,此对象映射的是数据库中的数据表。那么它是一一映射吗?回答是否定的,后面会提到这个问题。再来说,非常轻量级的封装是什么意思。使用hibernate操作数据库,hibernate提供了一种类似于SQL的语言叫做HQL。除了HQL还有其他五种查询方式,参考 http://www.cnblogs.com/shiyangxt/archive/2009/01/13/1375151.html。
    2,下载:
    下载地址http://hibernate.org/orm/
    至2015-3月最新版本为4.3.8

    3,环境介绍
    JDK1.7 + Mysql5.0 + hibernate4.3.8 + Eclipse luna
    4,简述原理:
    hibernate首先通过配置文件cfg.xml初始化数据库,创建SessionFactory,进而得到session也就是一个数据库连接。cfg文件中包括数据库驱动、URL、数据库名称以及密码等等参数,最重要的是将表或者视图的hbm文件写入cfg文件,否则是无法使用hibernate服务的。当用户操作数据库表或视图的时候,hibernate加载此表的hibernate mapping文件也就是hbm.xml文件。hbm文件主要是映射数据库表与持久化类POJO。通过hbm文件可以将实体对象与数据库表或者视图对应,从而间接的操作数据库表或者视图。

    5,配置文件

    cfg文件必须放在根包路径下,才会被自动加载执行。

    hbm文件就是对象表之间的映射文件。在此文件中可以清晰的看到映射关系。hbm文件一般放在POJO类相同的包路径下。同样会被自动解析加载。
    

    6,创建POJO类。
    首先来捋一捋各种O。
    PO:persistant object持久对象。BO:business object业务对象。VO:value object值对象、ViewObject表现层对象。DTO:Data Transfer Object数据传输对象。DAO:data access object数据访问对象。一个对象究竟是什么O要看具体环境,在不同的层、不同的应用场合,对象的身份也不一样,而且对象身份的转化也是很自然的。
    举例说明:
    比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO
    POJO:persistant object Java object。持久化数据对象。POJO类的特点是一般只有seter、geter方法和一个无参构造一个全参构造的简单类。此类又叫做DATA类。

    这里给出一个HibernateTool的工具类来加载配置文件和获得、关闭session。
    public class HibernateTool {
    private static SessionFactory factory;
    static{ //待记录
    try{
    Configuration configuration = new Configuration();
    configuration.configure("hibernate.cfg.xml");
    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
    System.out.println("Hibernate serviceRegistry created");
    factory = configuration
    .buildSessionFactory(serviceRegistry);
    }catch(Exception e){
    throw e;
    }
    }
    /**
    * 得到一个session对象
    * @return
    */
    public static Session getSession(){
    return factory.openSession();
    }

       /**
        * 释放此session对象,是释放不是关闭哦
        * @param session
        */
       public static void closeSession(Session session){  
           if(session!=null){  
               if(session.isOpen()){  
                   session.close();  
               }  
           }  
       }  
         
       public static SessionFactory getSessionFactory(){  
           return factory;  
       }  
    

    }

  • 相关阅读:
    iOS UI调试神器,插件injection for Xcode使用方法
    iOS 开发笔记-Objective-C之KVC、KVO
    iOS 测试企业应用的分发
    iOS 阅读唐巧博客心得
    iOS 添加启动图片
    Xcode 常用命令
    iOS 开发笔记
    iOS 开发常用链接总结
    iOS
    iOS UI基础
  • 原文地址:https://www.cnblogs.com/huaziWEB/p/4384440.html
Copyright © 2020-2023  润新知