为了账号安全,请及时绑定邮箱和手机立即绑定

从零打造在线网盘系统之Hibernate框架起步

标签:
Java

Hibernate概述

Hibernate是一个对象关系映射框架,可以通过XML配置文件或者注解将数据库与实体Bean进行映射

Hibernate常规配置步骤

  1. 配置Hibernate

  2. 建立实体Bean及其映射文件

  3. 建立会话(Session)工厂

  4. 通过会话(Sessioon)工厂操作会话

配置Hibernate

对于配置Hibernate我们有很多种方法,例如XML配置,属性文件配置,编程方式配置,注解配置等.


XML配置 小节完整示例代码下载

编写名为Hibernate.cfg.xml的xml文件放入资源目录,根据下面形式对Hibernate进行配置

<?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.username : 连接数据库的用户名 -->
        <property name="hibernate.connection.username">root</property>


        <!-- hibernate.connection.password : 连接数据库的密码 -->
        <property name="hibernate.connection.password">jimisun</property>


        <!-- hibernate.connection.url : 连接数据库的地址,路径 -->
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>


        <!-- show_sql: 操作数据库时,会 向控制台打印sql语句 -->
        <property name="show_sql">true</property>


        <!-- format_sql: 打印sql语句前,会将sql语句先格式化  -->
        <property name="format_sql">true</property>


        <!-- hbm2ddl.auto: 生成表结构的策略配置
             update(最常用的取值): 如果当前数据库中不存在表结构,那么自动创建表结构.
                     如果存在表结构,并且表结构与实体一致,那么不做修改
                     如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列.
             create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失)
             create-drop(极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构.
             validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构. 如果表结构不一致将会抛出异常.
          -->
        <property name="hbm2ddl.auto">update</property>


        <!-- 数据库方言配置
         org.hibernate.dialect.MySQLDialect (选择最短的)
         -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>


        <!-- hibernate.connection.autocommit: 事务自动提交  -->
        <property name="hibernate.connection.autocommit">true</property>


        <!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession -->
        <property name="hibernate.current_session_context_class">thread</property>


        <!-- 引入ORM 映射文件
            填写src之后的路径
         -->
        <mapping resource="com/jimisun/domain/User.hbm.xml"/>
    </session-factory></hibernate-configuration>

属性文件配置 小节完整示例代码下载

编写hibernate.properties的properties配置文件放入资源目录,配置形式如下

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8hibernate.connection.username=root
hibernate.connection.password=root
hibernate.show_sql=truehibernate.format_sql=truehibernate.hbm2ddl.auto=update

编程配置

编程配置hibernate在实际开发中使用较少,了解即可

    Configuration configuration = new Configuration();        configuration.addResource("mapping.xml")
                .setProperty("connection.username", "root")
                .setProperty("connection.password", "jimisun")
                .setProperty("dialect", "org.hibernate.dialect.MySWLDialect")
                .setProperty("connection.url", "jdbc:mysql://localhost:3306/test")
   
             .setProperty("connection.driver_class", "com.mysql.jdbc.Driver");

注解配置 小节完整示例代码下载

注解配置严格上来说并不是一种配置方式,仍然需要使用XML或者properties将Hibernate进行配置,在Bean实体和表之间的映射关系我们就可以使用注解进行配置,就不需要编写Bean对应的映射XML文件

首先使用XML或者properties配置hibernate
@Entity@Table(name = "user")
public class User {    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;    private String username;    private String password;

}

Session增删改查示例 小节完整示例代码下载

    /**
     * 保存&更新User
     */
    static void addUser() {
        Transaction transaction = session.beginTransaction();        User user = new User();        user.setUsername("jimisunl");        user.setPassword("jimisun");
        session.saveOrUpdate(user);
        transaction.commit();
    }
    /**
     * 查找User
     *
     * @param theClass
     * @param id
     * @return
     */
    static User getUser(Class theClass, Serializable id) {        return (User) session.find(theClass, id);
    }
    /**
     * 删除User
     * @param object
     */
    static void deleteUser(Object object) {
        Transaction transaction = session.beginTransaction();
        session.delete(object);
        transaction.commit();
    }

本篇总结

掌握Hibernate的配置方式,能使用的HibernateSessionFactory的Session进行增删改查操作

原文出处:https://www.cnblogs.com/jimisun/p/9938384.html  

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消