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. 确保数据库存在,运行上述项目

时间: 2024-12-29 11:23:34

hibernate学习笔记之二(初识hibernate)的相关文章

《Hibernate学习笔记十二》学生、课程、分数关系的设计与实现

<Hibernate学习笔记十二>学生.课程.分数关系的设计与实现 这个马士兵老师的Hibernate视频学习的一个题目,这里面要用到多对多.多对一的关联关系以及联合主键,因此觉得挺好的,自己写篇博文来记录下. 先考虑数据库表 1.学生表:为简单起见,只考虑了学生id和学生姓名,其中id为主键 2.课程表:为简单起见,只考虑了课程id和课程名称,其中id为主键 3.分数表 分数表有两种解决方案 3.1 第一种为:使用联合主键:student_id 和 course_id 3.2 第二种:不使用

Hibernate学习笔记(1)Hibernate配置

一 准备工作 首先我们将创建一个简单的基于控制台的(console-based)Hibernate应用程序. 我们所做的第一件事就是创建我们的开发目录,并且把所有需要用到的Java库文件放进去.解压缩从Hibernate网站下载的Hibernate发布包,并把所有需要的库文件拷到我们项目中去. 学习建User-library-hibernate,并加入相应的jar包 (a)项目右键-buildpath-configure build path-add library (b)选择User-libr

Hibernate学习笔记(1)Hibernate构造

一 准备工作 首先,我们将创建一个简单的基于控制台(console-based)Hibernate应用. 我们所做的第一件事就是创建我们的开发文件夹.并把所有需要用到的Java件放进去.解压缩从Hibernate站点下载的Hibernate公布包.并把全部须要的库文件拷到我们项目中去. 学习建User-library-hibernate,并增加对应的jar包 (a)项目右键-buildpath-configure build path-add library watermark/2/text/a

Hibernate学习笔记(二)

一.hibernate配置文件的两个配置项 hbm2ddl.auto:该属性可帮助程序员实现正向工程, 即由 java 代码生成数据库脚本, 进而生成具体的表结构. . 取值 create | update | create-drop | validate create : 会根据 .hbm.xml 文件来生成数据表, 但是每次运行都会删除上一次的表 ,重新生成表, 哪怕二次没有任何改变 create-drop : 会根据 .hbm.xml 文件生成表,但是SessionFactory一关闭,

【Hibernate学习笔记-4】在hibernate.cfg.xml中配置C3P0数据源

jar包 hibernate.cfg.xml <?xml version="1.0" encoding="GBK"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.d

Hibernate学习笔记(1)---hibernate快速上手与准备工作

持久层介绍 持久化:将内存中的数据保存在磁盘等存储设备中. 持久化对象:指已经存储在数据库护着磁盘的业务对象 经典的软件应用体系结构(三层结构) 在三层结构中,由于业务逻辑除了负责业务逻辑以外,还要负责相关的数据库操作,为了更好的业务逻辑的开发,形成了一个新的,单独的持久化层,增加了持久化以后,就形成了四层结构 hibernate介绍 hibernate是一个开源的对象-关系映射(即ORM)的轻量级框架,它对JDBC进行了封装,开发人员通过使用面向对象的思想进行持久层开发,操作数据库. hibe

Hibernate学习笔记(2)---hibernate核心文件

配置hibernate.cfg.xml hibernate配置文件包含连接持久层与映射文件所需的基本信息.配置文件名默认为hibernate.cfg.xml. hibernate.cfg.xml文件配置 <span style="font-size:18px;"><!-- 配置文件的DTD信息 --> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configur

Hibernate学习笔记(3)---hibernate关联关系映射

一对一关联 假设有两个持久化类(实体类)User与Address,它们之间存在一对一的关系 1,通过主键关联(个人偏向另外一种) User.hbm.xml文件配置 <id name="userid" type="java.lang.Integer"> <column name="userid" /> <!-- 主键关联,将主键生成策略改为foreign,表明由关联类来生成主键, 即直接使用另外关联类的主键值,该实体类

hibernate学习笔记(1)hibernate基本步骤

hibernate基本步骤 // 1. 创建Hibernate配置对象 Configuration config = newConfiguration(); config.configure("hibernate.cfg.xml");//加载配置文件 // 2. 创建SessionFactory对象 SessionFactory sessionFactory = config.buildSessionFactory(); // 3. 打开Session对象 Session sessio