• 深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架


     这篇博客是hibernate学习的第一篇,主要简单介绍hibernate框架,之后简单说一下hibernate的目录结构,最后写一个简单的hibernate实例。通过这三步来简单的认识一下hibernate。

    废话不多说,步入正题。首先简单介绍一下hibernate框架,它是一种基于JDBC的主流持久化框架,是一个优秀的orm实现;它对JDBC进行了轻量级的封装,大大简化了数据访问层繁杂的重复代码;而且它利用了java反射机制来实现程序的透明性;它的本意是从对象出发而非关系数据库出发,这一点也就是说明它是以面向对象思维解决数据库的操作问题。

    以上是从概念上说的hibernate,下面来看一下hibernate目录结构:

     

    这就是解压出来的hibernate的目录文件,在这里面doc目录为文档,lib目录为所用的库文件,src为hibernate源代码,hibernate3.jar为打包后的字节码文件。另外一些随后博客遇到再介绍。

    这里要说的学习hibernate框架始终和3个比较重要的文件打交道,即hibernate本身的配置文件hibernate.cfg.xml文件,这个文件用来配置hibernate自身属性,数据库驱动、数据库连接和数据库方言;另外一个是对象关系映射配置文件,如UserInfo.hbm.xml。此文件负责实体对象到关系数据库映射。最后一个就是我们常见的持久化类了,也就是对象现实中的实体。

    有了上面的基础,我们来一步一步的实现一个hibernate实例。

    1.      在eclipse中配置hibernate环境:

    我们首先建立一个项目,名叫hibernate_first,之后自定义个存放jar包的库,就取名为UserLibrary;导入相关的包,这些包包括相应数据库驱动、hibernate目录下lib文件夹下的jar包,还有hibernate目录下的hibernate3.jar。

    2.      导入hibernate.cfg.xml,并且配置数据库连接:

    将hibernate目录下的hibernate.cfg.xml文件导入项目的src目录下,之后配置数据库连接信息,我们这个实例选取的是用Mysql作为数据库,所以我们就要在hibernate.cfg.xml下配置如下信息。

    1. <!DOCTYPE hibernate-configuration PUBLIC  
    2.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
    3.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
    4.   
    5. <hibernate-configuration>  
    6.     <session-factory>  
    7.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
    8.         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/User</property>  
    9.         <property name="hibernate.connection.username">root</property>  
    10.         <property name="hibernate.connection.password">123</property>  
    11.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
    12.   
    13.       
    14.       
    15.     </session-factory>  
    16. </hibernate-configuration>  

    3.      建立实体类User.java

    1. import java.util.Date;  
    2.   
    3. public class User {  
    4.   
    5.     private String id;  
    6.       
    7.     private String name;  
    8.       
    9.     private String password;  
    10.       
    11.   
    12.     public String getId() {  
    13.         return id;  
    14.     }  
    15.   
    16.     public void setId(String id) {  
    17.         this.id = id;  
    18.     }  
    19.   
    20.     public String getName() {  
    21.         return name;  
    22.     }  
    23.   
    24.     public void setName(String name) {  
    25.         this.name = name;  
    26.     }  
    27.   
    28.     public String getPassword() {  
    29.         return password;  
    30.     }  
    31.   
    32.     public void setPassword(String password) {  
    33.         this.password = password;  
    34.     }  
    35.   
    36. }  


    4.      提供User.hbm.xml文件,完成实体类的映射(编写对象关系映射文件,把对象关系映射的逻辑放在此处,这个文件包括表和字段的对象关系,当操作对象时,该文件通过java反射机制产生的方法,会把对象的方法转为关系的方法)

     

    1. <?xml version="1.0"?>  
    2. <!DOCTYPE hibernate-mapping PUBLIC   
    3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
    5. <hibernate-mapping>  
    6.     <class name="com.cjq.hibernate.User">  
    7.         <id name="id">  
    8.             <generator class="uuid"/>  
    9.         </id>  
    10.         <property name="name"/>  
    11.         <property name="password"/>  
    12.     </class>  
    13. </hibernate-mapping>  

      这里完成实体类映射的时候数据就要建立了,建立数据库一定要和配置文件中的相符合。

    5.      将User.hbm.xml文件加入到hibernate.cfg.xml文件中

    1. <mapping resource="com/cjq/hibernate/User.hbm.xml"/>  

    6.      编写运行测试类

     

    1. import org.hibernate.Session;  
    2. import org.hibernate.SessionFactory;  
    3. import org.hibernate.cfg.Configuration;  
    4.   
    5. public class HibernateTest {  
    6.   
    7.     public static void main(String[] args) {  
    8.           
    9.         //读取hibernate.cfg.xml文件  
    10.         Configuration cfg = new Configuration().configure();  
    11.           
    12.         //建立SessionFactory  
    13.         SessionFactory factory = cfg.buildSessionFactory();  
    14.           
    15.         //取得session  
    16.         Session session = null;  
    17.         try {  
    18.             session = factory.openSession();  
    19.             //开启事务  
    20.             session.beginTransaction();  
    21.             User user = new User();  
    22.             user.setName("张三");  
    23.             user.setPassword("123");  
    24.               
    25.             //保存User对象  
    26.             session.save(user);  
    27.             User u1=(User)session.load(User.class, new String("402881e4361533e901361533eb920001"));  
    28.             System.out.print("从数据库加载数据的用户名为"+u1.getPassword());  
    29.             //提交事务  
    30.             session.getTransaction().commit();  
    31.         }catch(Exception e) {  
    32.             e.printStackTrace();  
    33.             //回滚事务  
    34.             session.getTransaction().rollback();  
    35.         }finally {  
    36.             if (session != null) {  
    37.                 if (session.isOpen()) {  
    38.                     //关闭session  
    39.                     session.close();  
    40.                 }  
    41.             }  
    42.         }  
    43.     }  
    44. }  

    7.      建议

    最好加入如下配置项,方便观察hibernate sql的生成:

         

    1. <propertynamepropertyname="hibernate.show_sql">true</property>  
    2. lt;propertyname="hibernate.format_sql">true</property>  

    最好加入log4j配置文件,将该配置文件拷贝到src下,便于程序的调试。

    8.      结果

    通过一些概念和目录还有实例实现,现在对hibernate有所了解,下面的博客要对JDBC和反射机制做一些简单的介绍,这些知识是hibernate框架的基础,所以有必要在深入学习hibernate框架之前介绍一下。敬请期待!!!

  • 相关阅读:
    [转贴]ASP.NET下对远程SQL SERVER数据库的备份和恢复的存储过程
    [原创]一个不错TreeView的样式
    [转贴]如何在ASP.NET中用OWC绘制图表
    [讨论]如何提高博客的访问量,写什么样的文章比较吸引读者啊!
    Revit API电缆桥架CableTray
    黄聪:win7系统下麦克风无法使用、有杂音和电流声的解决办法
    黄聪:.Net Framework Initialization Error – Unable to find a version of the runtime to run this application解决方案
    黄聪:js、Jquery将日期例如(20120903)转换为数字格式
    黄聪:wordpress文章同步发布到网易、天涯、新浪博客、百度空间插件
    黄聪:WIN7下安装 virtualbox WIN7系统 无法安装增强功能
  • 原文地址:https://www.cnblogs.com/Coda/p/3667058.html
Copyright © 2020-2023  润新知