zoukankan      html  css  js  c++  java
  • Hibernate入门教程(一):入门示例(Myeclipse)

    ●项目结构

    ●本项目所用Hibernate版本为5.4.5.Final,导入jar只需lib目录下的required和MySQL所需的jar驱动

     1.导入相关jar包(配置构建路径)

    说明:本人已将所需的jar包添加到用户库,所以无需建lib目录导入jar包

    鼠标在项目名右键,构建路径-->配置构建路径-->添加库-->用户库,选择所需的库

    2.创建实体类User.java

    package com.sve.Test;
    
    public class User {
        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;
        }
        
        
    }
    User.java

    3.创建对象映射User.hbm.xml

    一般跟JavaBean对象放在同一目录,后缀为 .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 package="com.sve.Test">
        <!-- 
            1.配置类与表对应
                class标签
                    name属性:实体类名
                    table属性:数据库表名称
         -->
        <class name="User" table="User">
            
            <!-- 
                2.配置实体类id与表id对应
                hibernate要求实体类有一个属性唯一值
                hibernate要求表有字段作为唯一值
             -->
             
             <!-- 
                 id标签
                 name属性:
                 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>
    User.hbm.xml

    4.创建hibernate.cfg.xml

    放在src目录下,名字不可改

    <?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节点代表一个数据库 -->
        <session-factory>
            <!-- 第一部分: 配置数据库信息,必须的 -->
            <!-- 加载驱动 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <!-- 创建链接 serverTimezone=UTC:防止时区问题 -->
            <property name="hibernate.connection.url">jdbc:mysql:///hibernate_demo?serverTimezone=UTC</property>
            <!-- 数据库用户名 -->
            <property name="hibernate.connection.username">root</property>
            <!-- 数据库用户名密码 -->
            <property name="hibernate.connection.password">123456</property>
    
            <!-- 第二部分:配置hibernate信息 ,可选的 -->
            <!-- 数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
            <!-- 显示hibernate在运行时候执行的sql语句 -->
            <property name="hibernate.show_sql">true</property>
            <!-- 格式化sql语句 -->
            <property name="hibernate.format_sql">true</property>
            <!-- update:如果有表,则更新,没有表,则创建 -->
            <property name="hibernate.hbm2ddl.auto">create</property>
    
            <!-- 第三部分:把映射文件放到核心文件中 ,必须的 -->
            <mapping resource="com/sve/Test/User.hbm.xml" />
        </session-factory>
    </hibernate-configuration>
    hibernate.cfg.xml

    5.测试

    package com.sve.Test;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    
    public class Test {
        public static void main(String[] args) {
            User user=new User();
            user.setUsername("小小");
            user.setPassword("123");
            user.setAddress("天坛");
            
              
              //获取加载配置管理类
                Configuration configuration = new Configuration();
                
              //不给参数就默认加载hibernate.cfg.xml文件,
                configuration.configure();
                
                //创建Session工厂对象
                SessionFactory factory = configuration.buildSessionFactory();
                
              //得到Session对象
                Session session = factory.openSession();
                
              //使用Hibernate操作数据库,都要开启事务,得到事务对象
                Transaction transaction = session.getTransaction();
                
              //开启事务
                transaction.begin();
                
              //把对象添加到数据库中
                session.save(user);
                
              //提交事务
                transaction.commit();
    
                //关闭Session
                session.close();
        }
    }
    Test.java

    运行成功后,查看相应的数据库的表是否发生改变和控制台是否有相应的语句

    配置文件说明:

    一.映射配置文件

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

    2.id标签和property标签中,column属性可以省略,和name属性值一样(不建议这样做)

    3.property标签type属性,设置生成表字段的类型(一般不设置,自动对应类型)

    二.核心配置文件

    1.核心配置文件位置和名称是固定的

    2.数据库部分是必要的,Hibernate部分是可选的,映射文件是必须的

    实体类编写规则:

    1.实体类属性是私有的

    2.私有属性使用公开的的set和get方法操作

    3.要求实体类有属性作为唯一值(一般使用id)

    4.实体类属性建议不使用基本数据类型,使用基本类型对应的包装类(本示例为简单示例,所以使用基本数据类型)

     hibernate主键生成策略

     1.native:根据使用的数据库自动选择相应的值

     2.uuid:使用uuid生成策略,实体类属性类型 必须 是 字符串类型

    本示例参考https://www.cnblogs.com/Java3y/p/8520601.html,在此感谢Java3y

  • 相关阅读:
    [Luogu] 借教室
    [Luogu] 子共七
    [Luogu] 让我们异或吧
    【bzoj1030】[JSOI2007]文本生成器
    HDU3068 最长回文
    【bzoj2342】[Shoi2011]双倍回文
    【NOIP2012】借教室
    HDU2203 亲和串
    【POJ2001】Shortest Prefixes
    vodevs3031 最富有的人
  • 原文地址:https://www.cnblogs.com/qc-wh/p/11609245.html
Copyright © 2011-2022 走看看