hibernate学习笔记之二(初识hibernate)

(hibernate学习笔记系列来自于 “疯狂Java” 视频学习)

Hibernate概述

免费开源Java包,可以使程序和数据库的交互变得容易,并更加符合面向对象的设计。
持久化:将数据保存到数据库中

hibernate持久化类步骤

  1. 环境搭建
    • 导入jar包,在hibernate包里的\lib\required文件夹里
    • 导入mysql的JDBC驱动
    • 将上述包添加到路径里面
  2. 编写持久化类
    要求:

    • 在持久化类中一般需要一个id,通常用Integer类型,这样之后操作会使用null,而不是使用0,这样向数据库添加的时候用null则数据库会自动添加
    • 为属性提供getter和setter
    • 这个类不能是final的
    • 需要为这个类提供无参的构造器(反射技术)
    • 如果有涉及集合数据的操作,集合类型要使用接口类型,如List,而不是ArrayList
  3. 编写映射文件
    编写一个与持久化类名相同的映射文件,可以使用hibernate包中的project文件夹下面搜索*.hbm.xml文件,随便选择一个,复制,作为一个模板。

    与持久化类类名相同是为了之后的维护,放到持久化类所在的包里。

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <!--映射配置文件-->
    <!--持久化类与表的对应关系-->
    <hibernate-mapping package="类所在的包">
    
        <!--面向对象的思想-->
        <class name="持久化类" table="表名">
            <!--属性和列名-->
            <id name="持久化类中的id属性">
                <!--id生成策略(参考cfg.xml文件中方言设置)-->
                <generator class="native" />
            </id>
            <!--如果配置了column,则创建设置的对应列名,否则使用name创建列名-->
            <property name="属性" column="对应列名"/>
            <property name="属性1" />
            ....
    
        </class>
    
    </hibernate-mapping>
    
  4. 配置连接数据库配置文件

    文件模板可以从hibernate包的project/etc/hibernate.cfg.xml中拷贝。
    
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
        <session-factory>
            <!--显示执行的SQL语句,开发阶段-->
            <property name="show_sql">true</property>
            <!--project/etc/hibernate.properties里可以找到数据库驱动的配置,然后参考着写-->
            <!--数据库驱动-->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <!--数据库url,三个斜线(/)表示连接本机-->
            <property name="hibernate.connection.url">jdbc:mysql:///test</property>
             <!--用户名-->
             <property name="hibernate.connection.username">gavin</property>
             <!--密码-->
             <property name="hibernate.connection.password">root</property>
             <!-- 自动建立映射文件对应的数据库表 create-drop 在程序启动的时候创建对应的数据库表结构,当SessionFactory关闭的时候会将创建的表结构删除,测试使用 create 在每次程序启动的时候先删除上次创建的表结构,然后再创建对应的数据库表结构;测试使用 update 在每次启动的时候会追加和修改表结构,但是不会影响原来的数据(通常使用的最多的是这个) validate 每次启动的时候会验证并修改表结构 这些配置的删除操作并不一定会正确删除 -->
             <property name="hibernate.hbm2ddl.auto">update</property>
    
             <!--方言,这个方言支持事务 如果使用的Mysql数据库版本在5.5之后的话,建议使用org.hibernate.dialect.MySQL5InnoDBDialect MySQLDialect 不支持事务 MySQLInnoDBDialect 支持事务 -->
             <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
             <!--对象/关系映射文件所在的路径-->
             <mapping resource="path/XXX.hbm.xml"/>
        </session-factory>
    
    </hibernate-configuration>
  5. 持久化到数据库

        //创建一个类,类中的main方法内容如下
        //读取配置文件,创建Configuration实例
        /* public Configuration configure() throws HibernateException{ configure("/hibernate.cfg.xml"); return this; } */
        Configuration config = new Configuration().configure();
        //此方法是hibernate4之前的获取方法
        //根据配置文件获取factory
        //SessionFactory是与应用程序生命周期一致的,是在多个线程之间共享的
        SessionFactory factory = config.buildSessionFactory();
        //与数据库的一次交互
    
        Session session = factory.openSession();
        //在使用hibernate进行增加,删除,修改的时候需要事务
        //查询不需要事务
        Transaction tx = session.beginTransaction();
        //创建需要持久化类Person对象
        Person person = new Person();
        person.setName("Li");
        person.setPassword("123456");
        person.setBirthday(new java.util.Date());
    
        //保存对象到数据库中
        session.save(person);
    
        //提交事务
        tx.commit();
        //关闭session,结束本次连接
        session.close();
  6. 确保数据库存在,运行上述项目

hibernate学习笔记之二(初识hibernate)_第1张图片

你可能感兴趣的:(Hibernate)