zoukankan      html  css  js  c++  java
  • 从零打造在线网盘系统之Hibernate框架起步

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重地阐述SSH三个框架的基础知识,第四部分将会进入项目实战,如果您已经对SSH框架有所掌握,那么可以直接浏览第四章,源码均提供在GitHub/ssh-network-hard-disk上供大家参阅

    本章的学习目标

    1. 明白什么是Hibernate
    2. 掌握XML配置Hibernate
    3. 掌握注解配置Hibernate
    4. Hibernate的基本增删改查的使用

    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=utf8
    hibernate.connection.username=root
    hibernate.connection.password=root
    hibernate.show_sql=true
    hibernate.format_sql=true
    hibernate.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进行增删改查操作

  • 相关阅读:
    关于Unity中调试C#的方法
    关于Unity的C#基础学习(二)
    关于代码命名规范
    关于Unity的C#基础学习(一)
    关于Unity的游戏的运行模式
    关于Unity的组件和作用
    关于Unity的开发模式
    关于Unity的坐标系
    关于Unity中场景视图的使用
    sql 追踪 神器
  • 原文地址:https://www.cnblogs.com/jimisun/p/9938384.html
Copyright © 2011-2022 走看看