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

posted @ 2019-09-29 18:03  青春-无悔  阅读(306)  评论(0编辑  收藏  举报