文章对应的项目github地址
https://github/mini-xiao/hibernate

一、新建项目

首先新建一个空白的java项目
File --> New --> Project
依赖的什么都不选,选中左边的java,然后点击Next就可以了

下一步之后会有一个提示
在这里需要选第一个,创建一个Main的类出来,这样可以直接创建出项目的结构出来
要是不选,也可以,就自己新建几个目录就可以了

下一步就是项目的名称跟路径了,这个看个人填写
填完选择Finish
这就是建好的项目结构

二、依赖包

根目录下新建一个架包lib
然后导入这些包,一个都不能少,少了都是会报错的

最后记得导入jar包,右键–>Add as Library…

导入成功就会这样子

具体这些jar包都有哪些功能,有兴趣的移步搜索学习

三*、实体类或hbm.xml映射文件

这里的实体类注释跟hbm.xml映射文件都是处理映射的
所以只需选择一个建好就可以了
两个都建没影响,但意义不大

3.1*、实体表

实体类就是对应着数据库表的一个对象类
一个表都会对应着一个实体类

新建一个UserEntity实体类

这里我放在com.xiao.Entity目录下

package com.xiao.Entity;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Table;

@Entity   //实体类注释  --必填
@Table(name = "user")  //对应的数据库表 name填写对应的表名 --必填
public class UserEntity {

    @Id                         //主键id注释  --字段名与列名一致可不填
    @JoinColumn(name = "id")    //列名
    private int id;
    @JoinColumn(name = "name")  //列名       --字段名与列名一致可不填
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "UserEntity{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

3.2*、hbm.xml映射文件

新建一个UserEntity.hbm.xml映射文件
处理UserEntity(无注释)跟数据库表的映射

这里我放在com.xiao.mapper目录下

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.xiao.Entity.UserEntity" table="user">
        <id name="id" type="int">
            <column name="id"/>
        </id>
        <property name="name" type="java.lang.String">
            <column name="name"/>
        </property>
    </class>
</hibernate-mapping>

四、配置文件

配置文件放在src根目录下
如果想换其他目录下,运行时需要指定路径

新建hibernate.cfg.xml配置文件

hibernate.cfg.xml是默认配置名称,有改动运行时需要指定文件

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!--数据库路径url-->
        <property name="connection.url">jdbc:mysql://192.168.31.120:3306/test</property>
        <!--驱动名称-->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        
        <!--数据库账号-->
        <property name="connection.username">root</property>
        <!--数据库密码-->
        <property name="connection.password">123456</property>
        
        <!-- 数据库方言  -->
        <!-- hibernate是要把Java对象转换成关系数据库来描述的,为了更好适配各种关系数据库 -->
        <!-- 针对每种数据库都指定了一个方言dialect。-->
        <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        
        <!-- 控制台是否打印sql语句 -->
        <property name="show_sql">true</property>
        <!-- 打印的sql语句是否格式化 -->
        <property name="format_sql">true</property>
        <!-- 指定自动生成数据表的策略  update为加载hibernate时自动更新数据库结构-->
        <property name="hbm2ddl.auto">update</property>
        
        <!-- 二选一 -->
        <!-- 3.1选择这个 -->
        <mapping class="com.xiao.Entity.UserEntity"/>
        <!-- 3.2选择这个 -->
        <mapping resource="com/xiao/mapper/UserEntity.hbm.xml"/>

    </session-factory>
</hibernate-configuration>

修改后的项目结构

需要注意的地方
如果选择3.1注释方法,则mapper目录及hbm.xml文件就不会存在
如果选择3.2方法,则UserEntity实体类还是需要建,但注释不需要写

五、测试

在我们新建项目时自动创建的Main类下进行连接测试

package com.xiao;

import com.xiao.Entity.UserEntity;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;

import java.util.List;

public class Main {

    public static void main(String[] args) {
        Configuration configuration = new Configuration();
        //这里指定了配置文件,如果是默认路径跟名称,则不需要指定文件,configure方法不需要传参
        //hibernate会自动在src目录下寻找hibernate.cfg.xml配置文件
        File file= new File("src/hibernate.cfg.xml");
        configuration.configure(file);

        SessionFactory sessionFactory = configuration.buildSessionFactory();
        Session session = sessionFactory.openSession();
        //查询数据库表数据
        //这里的`from UserEntity` 是指向UserEntity类,而不是数据库表名,SQL与HQL的区别
        Query query = session.createQuery("from UserEntity");
        List<UserEntity> list = query.list();
        System.out.println(list);
        //开启事务
        Transaction transaction = session.beginTransaction();

        UserEntity userEntity =new UserEntity();
        userEntity.setId(1);
        userEntity.setName("111");
        session.save(userEntity);
        //提交事务
        transaction.commit();
        //再次查询提交后的数据
        Query query1 = session.createQuery("from UserEntity");
        List<UserEntity> list1 = query1.list();
        System.out.println(list1);
        //关闭连接
        session.close();
    }
}

可以看到运行之后,控制台打印的sql语句及数据

hbm2ddl.auto生成策略我们选择了update
hibernate连接后,就会看是否有对应的表,没有就会创建数据库表,有则判断是否需要更新字段
所以第一次运行会有建表的sql语句,后面不会再有

Hibernate: 
    
    create table user (
       id integer not null,
        name varchar(255),
        primary key (id)
    ) engine=InnoDB
    
Hibernate: 
    select
        userentity0_.id as id1_0_,
        userentity0_.name as name2_0_ 
    from
        user userentity0_
        
[]

Hibernate: 
    insert 
    into
        user
        (name, id) 
    values
        (?, ?)
        
Hibernate: 
    select
        userentity0_.id as id1_0_,
        userentity0_.name as name2_0_ 
    from
        user userentity0_
        
[UserEntity{id=1, name='111'}]

利用工具Navicat连接数据库验证
可以看到数据库有了这个表,并且也添加了数据

hibernate项目就完成了
对您有帮助请帮忙点个赞
有疑问可留言评论,相互学习

更多推荐

新手入门简单hibernate项目