zoukankan      html  css  js  c++  java
  • Hibernate框架使用之环境搭建

    第一步:引入所需的jar

    第二步:创建实体类,配置实体类与数据表的映射关系

    创建实体类

    User.java

    package cn.hao.entity;
    
    public class User {
    
        /* hibernate要求实体类有一个唯一标识的属性 */
        private int uid;
        private String username;
        private String password;
        private String address;
        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;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
    
    }

    配置实体类与数据表映射关系

    方式1:使用xml配置文件完成

    User.hbm.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>
            <!-- 3、配置其他属性和字段对应 
                name属性:实体类属性名称
                column属性:生成表字段名称
            -->
            <property name="username" column="username"></property>
            <property name="password" column="password"></property>
            <property name="address" column="address"></property>
            
        </class>
    </hibernate-mapping>

    第三步:创建Hibernate核心配置文件

    核心配置文件的位置和名称必须是:src下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>
            <!-- 第一部分:配置数据库信息(必须的) -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">mysqladmin</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框架基本使用环境的搭建。

     

    测试代码

    package cn.hao.hibernatetest;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.junit.Test;
    
    import cn.hao.entity.User;
    
    public class HibernateDemo {
        @Test
        public void testAdd() {
            // 第一步 加载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 tx = session.beginTransaction();
            
            // 第五步 写具体crud操作
            User user = new User();
            user.setUsername("小明");
            user.setPassword("131415");
            user.setAddress("上海");
            // 调用session的方法实现添加
            session.save(user);
            
            // 第六步 提交事务
            tx.commit();
            
            // 第七步 关闭资源
            session.close();
            sessionFactory.close();
        }
    }
  • 相关阅读:
    thinkphp验证码功能
    thinkphp表单验证
    thinkphp操作数据库的CRUD
    thinkphp基础知识
    什么是预测区间,置信区间与预测区间二者的异同是什么?
    好消息! 不用再羡慕Python有jupyter 我R也有Notebook了【附演示视频】
    手把手教你在Windows环境下升级R
    Feather包实现数据框快速读写,你值得拥有
    pycharm设置字体大小
    pycharm显示行号
  • 原文地址:https://www.cnblogs.com/binaway/p/8963969.html
Copyright © 2011-2022 走看看