hibernate HelloWorld

南楼画角 提交于 2020-04-07 18:27:15

Hibernate是典型的ORM框架,对JDBC进行轻量级的封装,能够使程序员更加便捷的操作对象

可以去hibernate官网去下载,版本之间差异不大,我是用的是Hibernate 4.3

搭建Hibernate环境步骤:

一、 使用xml文件映射

  1.下载Hibernate包

  2.解压后,找到 lib/required 文件夹下的jar包就是一个hibernate程序所必需的

  3.新建java工程,把jar包添加到工程中去

  4.在src目录下新建*.cfg.xml文件,这是hibernate默认的配置文件,该配置文件中指定数据库驱动、用户名、密码等,还有hibernate的自身配置,是否显示SQL

  

<?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>
  <!-- 配置连接数据库的基本信息 -->
  <property name="connection.username">root</property>
  <property name="connection.password">1234</property>
  <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate</property>
  <!-- 配置hibernate基本信息 配置hibernate方言 
 当数据库版本为5.0以上时,方言设为MySQLInnoDBDialect便不能自动创建表,需要修改为MySQL5InnoDBDialect -->
  <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
  <!-- 执行操作时,是否在控制台打印信息 -->
  <property name="show_sql">true</property>
  <!-- 格式化sql -->
  <property name="format_sql">true</property>
  <!-- 指定自动生成数据表的策略 -->
  <property name="hbm2ddl.auto">update</property>
  
  <!-- 指定关联的hbm.xml文件 -->
  <mapping class="com.hibernate.test.News" resource="com/hibernate/test/News.hbm.xml"/>
 </session-factory>
</hibernate-configuration>

  5.新建需要持久化的类,新建这个类所需要的条件

      a.必须提供无参的构造器,方便底层反射调用
      b.提供一个标志属性,通常作为数据表的主键,否则一些功能将不起作用 如:session.save() or update()
      c.每个字段提供getter() setter()
    d.使用非final类,运行时生成代理,是hibernate的一个重要功能,如果持久化类没有实现任何接口,hibernate将使用CGLIB生成代理,如果是final类,则无法生成代理
            e.重写equals()和hashcode()

  6.为持久化类配置*.hbm.xml文件,在去.cfg.xml文件中映射该文件,到此hibernate的环境搭建成功

  7.新建测试方法

  

public void test1() {
        // 1.创建sessionfactory对象
        SessionFactory sessionfactory = null;
        // 1)创建configration对象:配置hibernate基本配置信息,和对应关系信息
        Configuration con = new Configuration().configure();
        //con.addClass(News.class); 使用5.0以上版本时,这句必须要写

        // 2)创建一个ServiceRegisty对象:代表service自己,hibernate的任何配置都需要在该对象中注册,才会有效
        StandardServiceRegistry serviceregisty = new StandardServiceRegistryBuilder()
                .applySettings(con.getProperties()).build();

        // 3)实例化sessionfactory
        sessionfactory = con.buildSessionFactory(serviceregisty);
        // 2.创建session对象
        Session session = sessionfactory.openSession();
        // 3.开启事物
        Transaction transaction = session.beginTransaction();
        // 4.执行保存操作
        News n = new News("江南明月", "闾丘薇露", new Date(new java.util.Date().getTime()));
        session.save(n);
//        News n=(News) session.get(News.class, 1);
//        System.out.println(n);
        // 5.提交事务
        transaction.commit();
        // 6.关闭session对象
        session.close();
        // 7.关闭sessionfactory对象
        sessionfactory.close();
    }

二、过程中的小细节

  1.hibernate 4.3 和 5.0及以上版本创建Serviceregisty方法不一致,5.0以上版本不再使用之前的方式

  2. 5.0版本在映射*.hbm.xml文件之后还是会报Unknown Mapping的错误,必须使用configuration.addClass手动加载

  3.学习过程中多个项目有共同的jar包时,可以新建User liberary,每次使用时添加就可以,就不会有很多份了,新建方法:preferences ->java ->build path ->User Libraries

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!