美文网首页
Day28 Hibernate第一天

Day28 Hibernate第一天

作者: 开发猛男 | 来源:发表于2019-05-31 00:08 被阅读0次

    框架的使用和概念在讲义上很清楚,不再重复。

    1. mysql数据库中bigint(32)对应java中long类型

    2. Java Bean属性,使用基本类型相对应的包装类。例如int默认值为0,而Integer为null,避免出错。

    3. Hibernate是一个持久层的ORM框架。

    4. ORM(Object Relational Mapping)对象关系映射

    ORM示意图

    5. SessionFactory

    • 一个SessionFactory实例对应一个数据库,应用从该对象中获得Session实例。
    • SessionFactory是线程安全的,意味着它的一个实例session可以被应用的多个线程共享。
    • SessionFactory是重量级的,意味着不能随意创建或销毁它的实例。如果只访问一个数据库,只需要创建一个SessionFactory实例,且在应用初始化的时候完成。
      总结:一般应用使用一个SessionFactory,最好是应用启动时就完成初始化。

    6. Session

    • Session是在Hibernate中使用最频繁的接口。也被称之为持久化管理器。它提供了和持久化有关的操作,比如添加、修改、删除、加载和查询实体对象
    • Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心
    • Session是线程不安全的,应避免多个线程使用同一个Session实例
    • Session是轻量级的,它的创建和销毁不会消耗太多的资源。应为每次客户请求分配独立的Session实例

    快速入门

    1. 下载相关jar包

    2. 创建数据库和表

    3. 搭建环境,创建web项目,导入jar包

    4. 配置映射文件示例

     <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE hibernate-mapping PUBLIC 
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
        <hibernate-mapping>
            <class name="com.itheima.domain.Customer" table="cst_customer">
                  <!--id设置主键属性-->
                <id name="cust_id" column="cust_id">
                    <generator class="native"/>
                </id>
                  <!--property设置各字段映射关系-->
                <property name="cust_name" column="cust_name"/>
                <property name="cust_user_id" column="cust_user_id"/>
                ....
            </class>
        </hibernate-mapping>
    
    5. 配置核心文件
      <?xml version="1.0" encoding="UTF-8"?>
        <!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>
                <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
                <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property>
                <property name="hibernate.connection.username">root</property>
                <property name="hibernate.connection.password">root</property>
                <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    
                <mapping resource="com/itheima/domain/Customer.hbm.xml"/>
            </session-factory>
        </hibernate-configuration>
    

    6. 编写代码

    @Test
        public void testSave(){
            // 先加载配置文件
            Configuration config = new Configuration();
            // 默认加载src目录下的配置文件
            config.configure();
            // 创建SessionFactory对象
            SessionFactory factory = config.buildSessionFactory();
            // 创建session对象
            Session session = factory.openSession();
            // 开启事务
            Transaction tr = session.beginTransaction();
            // 编写保存代码
            Customer c = new Customer();
            // c.setCust_id(cust_id);   已经自动递增
            c.setCust_name("测试名称");
            c.setCust_mobile("110");
            // 保存客户
            session.save(c);
            // 提交事务
            tr.commit();
            // 释放资源
            session.close();
            factory.close();
        }
    

    相关文章

      网友评论

          本文标题:Day28 Hibernate第一天

          本文链接:https://www.haomeiwen.com/subject/yxtutctx.html