温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hibernate入门一

发布时间:2020-08-06 09:34:05 来源:网络 阅读:339 作者:小咴 栏目:开发技术

什么是Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,是一个关系数据库ORM框架。
Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 (来自百度百科)

什么是ORM

ORM是Object Relational Mapping的简写,是一种程序技术,它实现了对象模型和关系模型之间的转换。
从理论效果上来说,它其实创建了一个可在编程语言里使用的“虚拟对象数据库”。

主流的ORM框架

1.JPA(JAVA Persistence API):通过JDK 5.0注解或XML描述对象-关系表的映 射关系(只有接口规范)
2.Hibernate:流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL
3.MyBatis 本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架
4.Apache DBUtils 、Spring JDBCTemplate

Hibernate优点

1.实现了对JDBC的封装,大大简化了持久层代码繁琐的重复性代码
2.简化了编码的工作
3.使用反射的机制
4.因为是一个轻量级的框架,性能非常好

初体验

准备工作
  1.导包
  2.编写JavaBean
  3.配置*.hbn.xml
  4.配置hibernate.cfg.xml

1.导包
            核心包    必须包    驱动包

2.编写JavaBean
create database hibernate;
use hibernate;
create table t_user(
  id int auto_increment primary key,
  username varchar(20),
  password varchar(20)
);

public class User {
    private int uid;
    private String username;
    private String password;

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

3.配置*.hbn.xml
<?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>
    <!--配置类和表的对应关系-->
    <!--
        name:全类名
        table:表名
    -->
    <class name="cn.robin.hibernate.demo01.User" table="tb_user">
        <!--
            要求实体类有唯一值
            要求表中有一个属性有唯一值
        -->
        <id name="uid" column="uid">
            <!--native表示主键自动增长-->
            <generator class="native" />
        </id>
        <!--配置其他属性-->
        <property name="username" column="username" />
        <property name="password" column="password" />
    </class>
</hibernate-mapping>

4.配置核心文件
<?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 元素用于配置Hibernate中的属性
            键:值
          -->
        <!-- hibernate.connection.driver_class : 连接数据库的驱动  -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- hibernate.connection.url : 连接数据库的地址,路径 -->
        <property name="hibernate.connection.url">jdbc:mysql///hibernate</property>
        <!-- hibernate.connection.username : 连接数据库的用户名 -->
        <property name="hibernate.connection.username">robin</property>
        <!-- hibernate.connection.password : 连接数据库的密码 -->
        <property name="hibernate.connection.password">robin</property>

        <!--配置hibernate(可选)-->
        <!--有SQL语句输出-->
        <property name="hibernate.show_sql">true</property>
        <!--对语句进行格式化-->
        <property name="hibernate.format_sql">true</property>
        <!--
            hibernate创建表的配置
            update:如果不存在表,则创建,如果存在,则更新
        -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--
            配置数据库方言
            MySql:limit
            Oracle:rownum
        -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 配置本地线程绑定session-->
        <property name="hibernate.current_session_context_class">thread</property>

        <!--把映射文件加载到核心配置文件中-->
        <mapping resource="cn/robin/hibernate/demo01/User.hbm.xml" />
    </session-factory>
</hibernate-configuration>
<!--
    映射配置文件
    1.映射配置文件的位置没有任何要求
    2.映射配置文件标签中name属性都是实体类的名称 column是表中字段的名称
        class中name属性的值是实体类的全路径
    3.id和property标签中的column属性可以省略,默认是name属性的值
    4.property标签中的type属性,用来设置字段的类型,自动对应类型
-->
<!--
    核心配置文件
    1.必须写在session-factory标签中
    2.名称和位置是固定的
        src hibernate.cfg.xml
-->

接下来就是测试了

public void demo() {
        // 加载hibernate核心配置文件
        Configuration configuration = new Configuration();
        configuration.configure();

        // 创建SessionFactory封装对象
        // 这个关系中,可能会根据映射关系创建表
        SessionFactory sessionFactory = configuration.buildSessionFactory();

        // 使用SessionFactory创建Session
        // 类似Connection
        Session session = sessionFactory.openSession();

        // 开启事务
        Transaction transaction = session.beginTransaction();

        // crud
        User user = new User();
        user.setUsername("robin");
        user.setPassword("123");

        // 调用session进行添加操作
        session.save(user);

        // 提交事务
        transaction.commit();

        // 关闭资源
        session.close();
        sessionFactory.close();
    }
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI