hibrenate框架入门学习

来源:互联网 发布:网络信息安全心得简短 编辑:程序博客网 时间:2024/06/08 08:18

hibernate是什么

框架是什么

  • 框架是用来提高开发效率的 *

  • 封装好了一些功能需要使用这些公能的时候,调用即可,不需要手动实现

  • 框架可以理解城一个半成品的项目,只要懂得如何使用这些功能即可

hibernate是什么

  • 对于Hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都可以,重要的是大家要 知道它的作用。在这里我习惯性称它为框架,它是一种能实现ORM的框架。能实现ORM这个功能的框架有很多,Hibernate可以说是这些框架中最流行、最受开发者关注的,甚至连JBoss公司也把它吸收进来,利用它在自己的项目中实现ORM功能。

hibernate使用的好处

* 操作数据库的时候,可以面向对象的方式来完成,不需要写SQL语句*

hibernate是一款orm框架

  • orm(Object Relational Mapping)对象关系映射

orm是什么?

  • ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作

好了hibernate就介绍到这里下面 让我们看看框架的使用

hibernate框架使用

导包

hibernate下载地址:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/

下载图片

  • hibernate5.0.7下载完成后目录解压图如下:
     hibernate5.0.7下载完成后目录解压图如下:
    hibernate-day01\hibernate-day01\resource\hibernate-release-5.0.7.Final\lib\jpa
  • hibernate-release-5.0.7.Final\lib\required这是hibernate,JAR包存放的地方 要导入 hibernate-day01\hibernate-day01\resource\hibernate-release-5.0.7.Final\lib\jpa\hibernate-entitymanager-5.0.7.Final.jar
  • 要到一个mysql的驱动包
  • *

创建数据库(hibernate可以根据对象映射技术所以我们不需要创建表)

书写orm元数据(对象和表的映射文件)

  • 导入约束
  • 约束文件路径: hibernate-release-5.0.7.Final\project\hibernate-core\src\main\resources\org\hibernate/hibernate-mapping-3.0.dtd
    不会导入的可以看这个
    http://blog.csdn.net/qq_37172500/article/details/72639875
    下面的选择url
    这里写图片描述
    key:用文本的形式打开自己选择的dtd约束文件
    这里写图片描述
    *好了 我们现在可以创建实体了
package com.demo.domain;public class User {    private Long uid;    private String name;    private String age;    public String getUid() {        return uid;    }    public void setUid(String uid) {        this.uid = uid;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }}

xml映射实体类命名规范(xxx.hbm.xml(xxx一般和实体类名一样))

<?xml version="1.0" encoding="UTF-8"?><--!这个约束在hibernate-mapping-3.0.dtd文件中--><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">     <!-- 配置表与实体对象的关系 -->   <!-- package属性:填写一个包名.在元素内部凡是需要书写完整类名的属性,可以直接写简答类名了. -->    <hibernate-mapping package="com.demo.domain">   <!--         class元素: 配置实体与表的对应关系的            name: 完整类名            table:数据库表名     -->    <class name="User" table="user">    <!-- id元素:配置主键映射的属性name: 填写主键对应属性名                                                                         column(可选): 填写表中的主键列名.默认值:列名会默认使用属性名type(可选):填写列(属性)的类型.hibernate会自动检测实体的属性类型.    每个类型有三种填法: java类型|hibernate类型|数据库类型not-null(可选):配置该属性(列)是否不能为空. 默认值:falselength(可选):配置数据库中列的长度. 默认值:使用数据库类型的最大长度         -->    <id name="uid">    <!--      <generator class="native"></generator>      class取值                          主键生成策略(6个)         increment: 用于long,short,int类型,由hibernate维护 自动以递增的方式 生成唯一标识符,每次增量为1                    只有没有其他进程向同一张表插入数据时才能使用         identity:采用底层数据库本身提供的主键生成表示符,条件是数据库支持自动增长数据类型.         sequence:hibernate维护根据底层数据库序列生成标识符,条件是数据库支持序列         native:根据底层数据库对自动生成表示符能力选择,适合数据库跨平台开发(个人比较推荐)         uuid:采用128位的UUID算法生成标识符,该算法能够在网路环境中生成唯一的字符串标识符,               UUID的编码为一个长度为32位的十六进制字符串         assigned:是由java程序负责生成标识符的,如果不指定ID元素的generator属性这默认使用该主键生成策略      -->                   <generator class="native"></generator>    </id>    <!--        name属性:实体类的成员变量        column属性:创建表出来的表字段        如果表字段和name属性一样可以不写    -->    <property name="name" column="name"></property>    <property name="age" column="age"></property>    </class>    </hibernate-mapping>

现在开始配hibernate主配置文件

  • 1:创建xml文件(命名规范hibernate.cfg.xml)必须叫这个名字hibernate.cfg.xml
  • 2:添加约束(和添加配置实体映射文件约束是一样的)这次添加的是
    hibernate-configuration-3.0.dtd这个文件还是选择url,key:”http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd“这里写图片描述
    • 3:书写hibernate.cfg.xml文件
<?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>        <!--注册驱动--><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <!--链接数据库--><propertyname="hibernate.connection.url">jdbc:mysql:///hibernate_32</property>        <!--数据库账号--><propertyname="hibernate.connection.username">root</property>    <!--数据库密码-->    <propertyname="hibernate.connection.password">123</property>        <!--使用mysql标准语法--><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>    <!--显示sql语句(不加这句控制台不会打印sql语句)-->    <property name="hibernate.show_sql">true</property><--!格式化sql语句这样比较好看(不加这句控制太输出的语句格式不好看)--><property name="hibernate.format_sql">true</property>        <!--自动创建表:有就直接使用没有表自动创建-->        <property name="hibernate.hbm2ddl.auto">update</property>        <!--引入实体映射文件-->        <mapping resource="com/demo/domain/User.hbm.xml" />    </session-factory></hibernate-configuration>

现在hibernate已经配置完成了,现在可以书写代码了

  • 现在我们用hibernate完成数据库的增,删,改,查
    这里我用的是一个自己封装的工具类
    可以点击下载源码
package com.xiaolong.utils;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtils {    private static SessionFactory sf;    static{        //1 创建,调用空参构造        Configuration conf = new Configuration().configure();        //2 根据配置信息,创建 SessionFactory对象         sf = conf.buildSessionFactory();    }    //获得session => 获得全新session    public static Session openSession(){                //3 获得session                Session session = sf.openSession();                return session;    }    //获得session => 获得与线程绑定的session    public static Session getCurrentSession(){        //3 获得session        Session session = sf.getCurrentSession();        return session;    }    public static void main(String[] args) {        System.out.println(HibernateUtils.openSession());    }}

@Testpublic void demo1(){Session session = HibernateUtils.getCurrentSession();Transaction tx = session.beginTransaction();//----------------------------------------------Userc = new User();c.setCust_name("张三");session.save(c);//执行保存//----------------------------------------------tx.commit();session.close();

@Testpublic void demo2(){        Session session = HibernateUtils.getCurrentSession();        Transaction tx = session.beginTransaction();        //----------------------------------------------        User u = session.get(User.class, 1l);        //2 调用delete删除对象        session.delete(u);        //----------------------------------------------        tx.commit();        session.close();

@Testpublic void demo3(){        Session session = HibernateUtils.getCurrentSession();        Transaction tx = session.beginTransaction();        //----------------------------------------------        User u = session.get(User.class, 1l);        //2 调用update更新对象        u.setName("李四");        session.update(u);        //----------------------------------------------        tx.commit();        session.close();

@Testpublic void demo4(){        Session session = HibernateUtils.getCurrentSession();        Transaction tx = session.beginTransaction();        //----------------------------------------------        User u = session.get(User.class, 1l);        System.out.println(u);        //----------------------------------------------        tx.commit();        session.close();

这就是hibernate简单的入门