`
youyu4
  • 浏览: 440547 次
社区版块
存档分类
最新评论

Hibernate--概念

 
阅读更多

声明:本贴只用于个人学习和总结,没有任何商业用途,如果侵权或问题,请尽早联系,本人马上删贴。

 

Hibernate--概念

 

       作为SSH三大框架之一的hibernate,是用来把程序的Dao层和数据库打交道用的,它封装了JDBC的步骤,是我们对数据库的操作更加简单,更加快捷。利用Hibernate框架我们就可以不再编写重复的JDBC代码,不再反复的测试我们的SQL语句写的如何。这里这需要我们简单配置,调用框架给我们提供的方法,就可以完成对数据增删改查的,那么Hibernate到底是个什么样的框架呢?如何使用呢?先看一个关于Hibernate框架的知识体系图:



 

 

Hibernate到底是什么?

 

Hibernate是一个基于元数据的轻量级的ORM框架:

 

 

元数据(Meta Data):

data about data(数据的数据),也就是说描述一个对象数据,相当于这个对象的上下文环境。

 

 

轻量级:

占用资源少,没有侵入性。(其实我认为这只是相对而言,如果和Ibatis相比,它到成重量级的了)。

 

 

ORM:(Object Relation Mapping)对象关系数据库的映射

这是Hibernate框架的重点,也就是说将我们程序中的实体(bean,这里也叫POJO)和数据库中的表进行映射。Java类型和sql类型映射,面向对象设计和关系型数据库设计的映射,从而我们只需要将更多的精力放到业务中,而不是sql数据库方面。

 

 

POJO:(Plain Ordinary Java Object)

无格式的普通java对象,也就是上边说的实体,和数据库做映射的简单类。只是在这里提出了一个新的名词而已。

 

 

       总而言之,Hibernate就是将我们的数据库表和程序的POJO类进行映射,数据的操作进行了封装,使我们不用把数据库弄得非常精通,我们会面向对象编程就可以了,这样大大提高了我们的编程效率,而且对个人的知识要求也降低了。(Hibernate的设计目的是这样的,可是我觉的要想更好的应用Hibernate,更好的掌握开发的来龙去脉,这是要求我们要有更高的能力了,知其然知其所以然了)

 

 

 

环境搭建

 

1,和前边几个框架的大概流程一样,首先需要我们拷入必备的jar包。jar包的拷入奔着一个够用即可的原则,用什么拷贝什么,当然有些日志输出,单元测试是为了更好的观察框架而拷入的不是必备的。这里讲到是用MySQL来进行演示,所以使用了mysql的驱动jar包:

                         

antlr-2.7.6.jar (生成SQL语句)

asm.jar(字节码增强工具类)

c3p0-0.9.1.jar(数据源连接池组件)

cglib-2.1.3.jar(代理组件,基于继承的)

commons-collections-2.1.1.jar(集合工具类组件,会进行高效的操作)

commons-logging-1.0.4.jar(日志输出的转换组件)

log4j-1.2.11.jar(日志输出组件,更加详细和可以控制输出格式,及目的地)

dom4j-1.6.1.jar(XML解析)

ehcache-1.2.3.jar(缓存组件)

ejb3-persistence.jar(持久化操作的规范jar包)

hibernate3.jar(框架的核心jar包)

jta.jar(全局的事务管理)

junit-3.8.1.jar        (单元测试)                        

mysql-connector-java-3.1.13-bin.jar        (MySQL数据库驱动jar包)

 

 

2,引入配置文件:

      

      hibernate.cfg.xml  Hibernate核心配置文件(包括数据库的连接配置,映射文件的读取等)

      log4j.properties          Log4j的日志输出控制文件

      User.hbm.xml  映射文件(这里的User只是匹配User实体的,一个实体类对应一个此类的映射文件。)

 

 

3,核心配置文件hibernate.cfg.xml的编写:

 

<hibernate-configuration>  
    <!-- 构造数据库的连接工厂,这是Hibernate的核心类 -->  
    <session-factory>  
      
        <!-- 这里是简单的数据库连接的基本信息,也可以写在配置文件中,或者利用JNDI来调用数据源 -->  
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=utf8</property>  
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
        <property name="hibernate.connection.username">ljh</property>  
        <property name="hibernate.connection.password">ljh</property>  
          
        <!-- 在控制台里打印生成的SQL语句 -->  
        <property name="hibernate.show_sql">true</property>  
        <!-- 格式化控制台输出的SQL语句,这两条都是方便我们来学习Hibernate框架 -->  
        <property name="hibernate.format_sql">true</property>  
          
          
        <!--   
            方言:根据指定的方言与数据库打交道,完成SQL的具有语句生成,因为不同的数据库sql语法还是有区别的,  
            这里相当于告诉Hibernate框架,我们使用的是什么数据库。  
                MySQL : org.hibernate.dialect.MySQLDialect  
                Oracle : org.hibernate.dialect.OracleDialect  
         -->  
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
          
        <!-- 管理所有的映射资源文件,这里仅仅配置了User类的配置映射文件,应该将我们的所有的映射配置文件设置到这里,这样我们框架才能找到 -->  
        <mapping resource="com/ljh/hibernate/pojo/User.hbm.xml"/>  
          
    </session-factory>  
</hibernate-configuration>  

 

 

4,   *.hbm.xml与实体类对应的用来做映射的文件的编写,我觉的这里是重点,设计的知识点比较多。这里简单看一个,后边会总结这里边的语法:

<hibernate-mapping>  
    <!-- 实体类class和数据库表table的映射 -->  
    <class name="com.ljh.hibernate.pojo.User" table="t_user">  
  
        <!--   
            id标签用来映射主键字段  
            name属性表示类的属性  
            column属性表示表的字段  
         -->  
        <id name="usercode" column="usercode" length="20">  
            <!-- 主键生成策略   
                native 表示根据连接数据库的表的主键生成方式来生成主键值  
                    mysql数据采用的auto_increment属性来生成主键值,一般主键字段需要设置的类型为int    
                assigned 表示主键由用户自己维护。     
            -->  
            <generator class="assigned"/>  
        </id>  
  
        <!-- 普通属性的映射  
            name 表示类中的属性名称    
            column 表示表中的列名称    column属性不指定会采用默认的值,默认名称与属性名称一致  
            length 表示属性的字符长度  
            not-null 表示属性值不能为null  
         -->  
        <property name="userpswd" column="userpswd" type="java.lang.String" length="20" not-null="true"/>       
        <property name="username" />  
        <property name="regdate" length="19"/>  
        <property name="orgtype" length="1"/>  
    </class>  
</hibernate-mapping>  

 

 

5, 上边已经做好了实体类和数据表的映射了,我们可以通过Hibernate框架提供的方法进行对数据库的数据操作了,简单看一个dao层类的实现:

public void insert(User user) {  
    //加载配置文件:classpath:hibernate.cfg.xml  
    Configuration config = new Configuration().configure();  
    //创建连接工厂  
    SessionFactory sf = config.buildSessionFactory();  
      
    //会话对象,表示与数据库的连接会话过程,相当于jdbc的connection连接对象  
    Session session = null;  
    Transaction tx = null ;  
    try {  
        //获取会话对象  
        session = sf.openSession();  
        //打开事务:Hibernate默认数据操作是不提交事务的,所以我们要手动提交事务。  
        tx = session.beginTransaction();  
        //保存对象,持久化操作  
        session.save(user);  
        //提交事务  
        tx.commit();                  
    } catch (Exception e) {  
        e.printStackTrace();  
        //事务回滚  
        tx.rollback();  
    } finally{  
        //连接会话关闭  
        if(session!=null){  
            session.close();  
        }  
    }         
}  

 

 

      综上为Hibernate实现一个简单插入user数据的例子,当然如果数据库关系复杂了,或者更多的设置,后边会进行相关总结。最后来看看Hibernate框架的优缺点吧,当然这些优缺点都是相对而言呢,看用在什么环境下了!

 

 

优点:

  • 轻量级的ORM框架
  • 对JDBC进行了很好的封装,使用了ORM做了映射,那么就可以通过面向对象的方式很容易的操作数据库了。
  • 它还提供了缓存机制,可以提高效率。

 

缺点:

  • 如果对大量的数据进行频繁的操作,性能效率比较低,不如直接使用JDBC。
  • 大小: 44.4 KB
分享到:
评论

相关推荐

    hibernate-release-4.1.4

    Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发人员在处理数据库时使用面向对象的概念,极大地简化了数据库操作。此版本包含了Hibernate的核心库和其他相关组件,使得开发者能够将Java类与数据库表...

    hibernate-core 核心jar包

    在Hibernate-Core中,主要包含以下几个关键模块和概念: 1. **Session接口**:它是Hibernate的主要工作接口,提供了对数据库的操作方法,如保存、更新、删除对象,以及执行SQL查询。Session管理了对象的状态,并...

    hibernate-core-5.0.11.Final.jar

    三、核心概念解析 1. **SessionFactory**:它是整个Hibernate的核心,负责实体类和数据库表之间的映射信息。SessionFactory是线程安全的,通常在应用启动时创建并全局共享。 2. **Session**:每个数据库操作都应在...

    hibernate-release-5.2.10.Final

    元模型是JPA中的一个重要概念,它包含了实体类的元数据信息,如字段、注解等,用于在运行时解析和验证查询表达式。通过这个生成器,开发者可以更加专注于业务逻辑,提高开发效率。 三、Envers审计模块 Hibernate ...

    Hibernate-annotations-3.4最新版本

    首先,让我们来了解Hibernate的核心概念。ORM是一种技术,它允许程序开发者使用面向对象的方式来操作数据库,而无需直接编写SQL语句。Hibernate通过提供一个映射框架,将Java类与数据库表关联起来,使得Java对象可以...

    hibernate-validator-5.2.4.Final.jar

    《Hibernate Validator 深度解析》 Hibernate Validator 是一个基于 Bean Validation 规范的实现,是 Hibernate 项目的一部分,主要用于进行 Java 对象的验证。它提供了丰富的约束注解和自定义验证逻辑,使得开发者...

    hibernate-release-5.0.0.Final(1).zip

    三、核心概念 1. 映射配置:通过Hibernate的XML配置文件或注解,我们可以将数据库表与Java类进行映射,定义字段之间的对应关系。 2. Session:作为与数据库交互的主要接口,Session负责对象的持久化操作,如保存、...

    hibernate-annotations-3.4.0.GA

    本篇将详细探讨Hibernate Annotations 3.4.0.GA版本中的核心概念、特性以及实际应用。 一、Hibernate Annotations简介 Hibernate Annotations是Hibernate 3.x系列引入的新特性,它允许开发者在Java实体类上直接...

    hibernate-release-5.0.7.Final.zip

    2. Hibernate核心概念 - Session:它是与数据库交互的主要接口,负责持久化对象的创建、更新和删除。 - Transaction:Hibernate提供了基于JTA和JDBC的事务管理,确保数据的一致性。 - Criteria API:提供了一种更...

    hibernate-memcached-1.1.0-sources.zip

    首先,我们需要理解Hibernate和Memcached的基本概念。Hibernate是Java中的一个ORM框架,它允许开发者使用面向对象的方式来操作数据库,降低了数据库操作的复杂性。而Memcached则是一种高性能、分布式的内存对象缓存...

    hibernate-distribution-3.6.2 API及jar包

    这份PDF文档详细介绍了Hibernate的核心概念、配置、实体映射、查询语言(HQL)以及事务和缓存管理等内容。通过阅读这份文档,开发者可以了解到如何将Java对象与数据库表进行映射,实现数据的持久化,从而避免直接...

    hibernate-orm-master.zip

    在实际开发中,理解并熟练运用这些核心概念和机制,可以帮助我们更高效地利用Hibernate ORM进行数据访问层的设计,减少数据库操作的复杂性,提高代码的可维护性。对于初学者,建议从简单的JAR包开始,逐步熟悉其API...

    hibernate-mapping参数详解

    在深入探讨`hibernate-mapping`参数之前,我们先理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。`hibernate-mapping`是Hibernate配置...

    Middlegen-Hibernate-r5

    尽管这个版本比较老旧,但对于学习Hibernate和理解ORM概念仍然有很高的参考价值。对于初学者,可以通过这个项目了解如何将数据库模型转换为Java对象,并掌握使用Hibernate进行数据库操作的基本技巧。对于经验丰富的...

    ssm中hibernate-validator后台注册验证

    首先,我们需要了解`Hibernate-Validator`的基本概念。它是一个强大的Bean Validation框架,能够对对象的属性进行约束验证。这些约束可以直接在Java类或XML配置文件中定义,并在运行时自动应用。例如,我们可以为一...

    hibernate-release-5.2.2.Final

    首先,我们来理解一下Hibernate的核心概念。ORM,即对象关系映射,是将传统的关系型数据库通过映射转换为面向对象的模型,使得开发者可以像操作对象一样操作数据库。Hibernate通过XML或注解方式定义对象和数据库表的...

    hibernate-release-4.2.2.Final

    理解并掌握其核心概念、配置方法以及整合框架的使用,将有助于提升项目的开发效率和代码质量。同时,了解并运用JAR包中的各个组件,可以更好地发挥Hibernate的潜能,为项目带来更高的灵活性和可维护性。

    hibernate-3.3.2.GA-jar包集合

    1. **Hibernate核心概念**: - **对象关系映射(ORM)**: ORM是Hibernate的核心,它通过在Java对象和数据库记录之间建立映射,使得开发者可以使用Java对象来操作数据库,而无需编写SQL语句。 - **SessionFactory**...

    hibernate-entitymanager-3.4.0.GA

    3. **实体(Entity)**:是JPA中的核心概念,代表数据库中的表。通过使用`@Entity`注解标记一个Java类,可以将其声明为一个实体。 4. **持久化上下文(Persistence Context)**:是Hibernate Entity Manager维护的...

    hibernate-jpa-2.1-api-1.0.0.Final.jar

    本文将深入探讨`hibernate-jpa-2.1-api-1.0.0.Final.jar`这个库,了解其源码中的关键概念和API,并结合具体应用,阐述如何在实际项目中有效利用这些知识。 首先,Hibernate-JPA 2.1 API 是Hibernate对Java ...

Global site tag (gtag.js) - Google Analytics