zoukankan      html  css  js  c++  java
  • Hibernate搭建

    第一步 导入hibernate的jar包

      首先导入lib目录下required目录中的所有包

      

      再导入jpa目录下的

      

      

      因为使用hibernate时候,有日志信息输出,hibernate本身没有日志输出的jar包,导入其他日志的jar包

    不要忘记还有mysql驱动的jar包

      

    第二步 :创建实体类

      

     1 public class User {
     2     
     3     private String uid;
     4     private String username;
     5     private String password;
     6     private String addres;
     7     
     8     public String getUid() {
     9         return uid;
    10     }
    11     public void setUid(String uid) {
    12         this.uid = uid;
    13     }
    14     public String getUsername() {
    15         return username;
    16     }
    17     public void setUsername(String username) {
    18         this.username = username;
    19     }
    20     public String getPassword() {
    21         return password;
    22     }
    23     public void setPassword(String password) {
    24         this.password = password;
    25     }
    26     public String getAddres() {
    27         return addres;
    28     }
    29     public void setAddres(String addres) {
    30         this.addres = addres;
    31     }
    32 }

      ps:使用hibernate时候,不需要自己手动创建表,hibernate帮把表创建

    第三步:配置实体类和数据库表一一对应关系(映射关系)

       

      使用配置文件实现映射关系

      (1)创建xml格式的配置文件

        - 映射配置文件名称和位置没有固定要求

        - 建议:在实体类所在包里面创建,实体类名称.hbm.xml

      (2)配置是是xml格式,在配置文件中首先引入xml约束

        - 学过约束dtd、schema,在hibernate里面引入的约束dtd约束

      

      映射配置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>
        <!-- 1 配置类和表对应 
            class标签
            name属性:实体类全路径
            table属性:数据库表名称
        -->
        <class name="cn.itcast.entity.User" table="t_user">
            <!-- 2 配置实体类id和表id对应 
                hibernate要求实体类有一个属性唯一值
                hibernate要求表有字段作为唯一值
            -->
            <!-- id标签
                name属性:实体类里面id属性名称
                column属性:生成的表字段名称
             -->
            <id name="uid" column="uid">
                <!-- 设置数据库表id增长策略 
                    native:生成表id值就是主键自动增长
                -->
                <generator class="native"></generator>
            </id>
            <!-- 配置其他属性和表字段对应 
                name属性:实体类属性名称
                column属性:生成表字段名称
            -->
            <property name="username" column="username"></property>
            <property name="password" column="password"></property>
            <property name="address" column="address"></property>
        </class>
    </hibernate-mapping>

    第四步 创建hibernate的核心配置文件

      (1)核心配置文件格式xml,但是核心配置文件名称和位置固定的

        - 位置:必须src下面

        - 名称:必须  hibernate.cfg.xml

        

      

      (2)引入dtd约束

    <?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">

      

      (3)hibernate操作过程中,只会加载核心配置文件,其他配置文件不会加载

        

        第一部分: 配置数据库信息 必须的

        第二部分: 配置hibernate信息 可选的

        第三部分: 把映射文件放到核心配置文件中

    <hibernate-configuration>
        <session-factory>
            <!-- 第一部分: 配置数据库信息 必须的 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">root</property>
            
            <!-- 第二部分: 配置hibernate信息  可选的-->
            <!-- 输出底层sql语句 -->
            <property name="hibernate.show_sql">true</property>
            <!-- 输出底层sql语句格式 -->
            <property name="hibernate.format_sql">true</property>
            <!-- hibernate帮创建表,需要配置之后 
                update: 如果已经有表,更新,如果没有,创建
            -->
            <property name="hibernate.hbm2ddl.auto">update</property>
            <!-- 配置数据库方言
                在mysql里面实现分页 关键字 limit,只能使用mysql里面
                在oracle数据库,实现分页rownum
                让hibernate框架识别不同数据库的自己特有的语句
             -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            
            <!-- 第三部分: 把映射文件放到核心配置文件中 必须的-->
            <mapping resource="cn/itcast/entity/User.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>

    五 使用(实现添加操作)

      

      

    第一步加载hibernate核心配置文件

     

    第二步创建SessionFactory对象

     

    第三步使用SessionFactory创建session对象

     

    第四步开启事务

     

    第五步写具体逻辑 crud操作

     

    第六步提交事务

     

    第七步关闭资源

    public class Htest {
        
        @Test
        void testAdd() throws Exception {
            //        第一步 加载hibernate核心配置文件
            // 到src下面找到名称是hibernate.cfg.xml
            //在hibernate里面封装对象
    
            Configuration cfg = new Configuration();
            cfg.configure();
    
            //        第二步 创建SessionFactory对象
            //读取hibernate核心配置文件内容,创建sessionFactory
            //在过程中,根据映射关系,在配置数据库里面把表创建
    
            SessionFactory sessionFactory = cfg.buildSessionFactory();
    
            //        第三步 使用SessionFactory创建session对象
            // 类似于连接
                    Session session = sessionFactory.openSession();
    
            //        第四步 开启事务
            Transaction ta = session.beginTransaction();
            
            //        第五步 写具体逻辑 crud操作
            //添加功能
            User user = new User();
            user.setUsername("wm");
            user.setPassword("123qwe");
            user.setAddress("hb");
            //调用session的方法实现添加
            session.save(user);
    
            //        第六步 提交事务
            ta.commit();
    
            //        第七步 关闭资源
            session.close();
            sessionFactory.close();
        }
    }            
  • 相关阅读:
    Tarjan算法
    10JS数组
    9JS循环
    8.JS流程控制
    7.JS运算符
    6.JS方法
    5.JS变量的各种问题
    java封装遇到的问题
    js报Uncaught SyntaxError: Unexpected token <错误 解决方法:
    使用layui出现Uncaught ReferenceError: layui is not defined问题解决:
  • 原文地址:https://www.cnblogs.com/kpsmile/p/10036068.html
Copyright © 2011-2022 走看看