【Hibernate学习之路1】Hibernnate入门

Hibernnate入门

在本文中的实例使用Oracle10g以及其中的Emp表作为示范。
1. 持久化

  1. 在了解持久化之前必须先了解数据的几个状态,数据状态如下:
    • 数据保存在内存中(瞬时状态)
    • 数据保存在数据库中并可以被Session操作(持久状态)
    • 数据库保存在数据库中,并且没有处在Session的生命周期。(脱管状态)
  2. 持久化:把瞬时对象保存在数据库中的过程叫做持久化。

2. Hibernnate概述

  1. Hibernnate是一个持久化技术。
  2. 是一个把数据对象保存到关系型数据库中的数据持久化框架
  3. ORM技术(完成对象数据到关系型数据库映射的机制成为对象关系映射,简称ORM)

3. 使用Hibernnate的三个准备

  1. 添加Hibernate支持
    在需要的项目名称右击-Build Path->Configure Build Path..->Java Build Path->Library->Add Library->MyEclipse Library->Hibernate 3.x Core Library
  2. 编写实体类与映射文件
    实体类
package com.web.bean;

public class Emp  implements Serializable{
//  声明私有属性
    private Integer empno;
    private String ename;
    private String job;
    private Integer Mgr;
    private String hiredate;//注意是String类型
    private Double sal;
    private Double comm;
    private Integer deptno;
//  有参无参构造方法
    public Emp() {
    }

    public Emp(Integer empno, String ename, String job, Integer mgr,
            String hiredate, Double sal, Double comm, Integer deptno) {
        this.empno = empno;
        this.ename = ename;
        this.job = job;
        this.Mgr = mgr;
        this.hiredate = hiredate;
        this.sal = sal;
        this.comm = comm;
        this.deptno = deptno;
    }
//每个属性的get/set方法
    public Integer getEmpno() {
        return empno;
    }

    public void setEmpno(Integer empno) {
        this.empno = empno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public Integer getMgr() {
        return Mgr;
    }

    public void setMgr(Integer mgr) {
        Mgr = mgr;
    }

    public String getHiredate() {
        return hiredate;
    }

    public void setHiredate(String hiredate) {
        this.hiredate = hiredate;
    }

    public Double getSal() {
        return sal;
    }

    public void setSal(Double sal) {
        this.sal = sal;
    }

    public Double getComm() {
        return comm;
    }

    public void setComm(Double comm) {
        this.comm = comm;
    }

    public Integer getDeptno() {
        return deptno;
    }

    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }



}
  • 不能是一个final类
  • 实现Serializable接口
  • 有无参构造函数
  • 属性小写
  • 每个属性都要有get/set方法

映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<!-- 映射文件根标签 -->
<hibernate-mapping>
<!--将项目中的bean与数据库表对应-->
    <class name="com.web.bean.Emp" table="emp">
    <!--设置主键以及其对应字段-->
        <id name="empno" column="empno">
            <generator class="assigned"></generator>
        </id>
        <!--将bean中的属性与表中的数据项一一对应-->
        <property name="ename" column="ename"></property>
        <property name="job" column="job"></property>
        <property name="mgr" column="mgr"></property>
        <property name="hiredate" column="hiredate"></property>
        <property name="sal" column="sal"></property>
        <property name="comm" column="comm"></property>
        <property name="deptno" column="deptno"></property>
    </class>
</hibernate-mapping>

最好在项目中单独创建一个专门用于存放xxx.hbm.xml的hbm包。
3. 编写hibernate.cfg.xml配置文件

<?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.driver_class">
        oracle.jdbc.driver.OracleDriver
    </property>
    <!--数据库地址-->
    <property name="connection.url">
        jdbc:oracle:thin:@localhost:1521:orcl
    </property>
    <!--账号密码-->
    <property name="connection.username">scott</property>
    <property name="connection.password">tiger</property>
    <!--数据库“方言”-->
    <property name="dialect">
        org.hibernate.dialect.Oracle10gDialect
    </property>
    <!--是否显示SQL语句-->
    <property name="show_sql">true</property>
    <!--对应的映射表-->
    <mapping resource="com/web/hbm/Emp.hbm.xml" />
</session-factory>
</hibernate-configuration>

注意hibernate.cfg.xml放在src文件夹下,创建过程如下:
新建XML文件
选择文件类型为DTD file
选择为Hibernate文件
4. 使用Hibernnate的7个开发步骤

  • 创建Configuration
  • 创建SessionFactory
  • 创建Seesion
  • 开始一个事务
  • 持久化操作
  • 提交事务
  • 关闭Session
public class Test {
    public static void main(String[] args) {
        Session session = null;
        Transaction tran = null;
        try {
            Configuration config = new Configuration().configure();//创建Configuration
            SessionFactory factory = config.buildSessionFactory();//创建SessionFactory
            session = factory.openSession();//创建Session
            tran = session.beginTransaction();//开始一个事务

            Emp e = new Emp();
            e.setEmpno(1234);
            e.setEname("顾一城");
            e.setJob("CLERK");
            e.setMgr(7902);
            e.setHiredate("1994/1/27");
            e.setSal(800.0);
            e.setComm(300.0);
            e.setDeptno(20);
            session.save(e);//持久化操作
            tran.commit();//提交事务
        } catch (Exception e) {
            e.printStackTrace();
            tran.rollback();//回滚事务
        } finally {
            session.close();//关闭Session
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值