美文网首页
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