(1)项目中添加Hibernate依赖

    <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.2.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>

(2)项目中添加Hibernate配置文件

 <?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="connection.driver_class">com.mysql.jdbc.Driver</property>-->
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <!--数据库连接地址-->
<!--<property name="connection.url">jdbc:mysql://localhost:3306/hibernatedemo</property>-->
<property name="connection.url">jdbc:mysql://localhost:3306/hibernatedemo?serverTimezone=UTC</property> <!--数据库连接用户名-->
<property name="connection.username">root</property> <!--数据库连接密码-->
<property name="connection.password"></property> <!-- 配置内置连接池中的连接数 -->
<property name="connection.pool_size">5</property> <!-- 数据库方言配置 -->
<!--<property name="dialect">org.hibernate.dialect.MySQLDialect</property>-->
<property name="dialect">org.hibernate.dialect.MySQL8Dialect</property> <!--&lt;!&ndash; Disable the second-level cache &ndash;&gt;-->
<!--<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>--> <!-- 操作数据库时,是否向控制台打印Sql语句 -->
<property name="show_sql">true</property> <!-- 事务自动提交 -->
<!--<property name="connection.autocommit">true</property>--> <!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession -->
<!--<property name="current_session_context_class">thread</property>--> <!-- 打印Sql语句前,是否将Sql语句格式化 -->
<property name="format_sql">true</property> <!-- 生成表结构的策略配置
update(最常用的取值): 如果当前数据库中不存在表结构,那么自动创建表结构.
如果存在表结构,并且表结构与实体一致,那么不做修改
如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列.
create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失)
create-drop(极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构.
validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构. 如果表结构不一致将会抛出异常.
-->
<property name="hbm2ddl.auto">update</property> <!-- 引入ORM映射文件 填写src之后的路径-->
<mapping resource="User.hbm.xml"/> <!-- Names the annotated entity class -->
<!--<mapping class="cn.coreqi.entities.Users"/>--> </session-factory> </hibernate-configuration>

(3)添加表对象关系映射文件 || 在实体类上添加注解(推介)

表对象关系映射文件

 <?xml version="1.0"?>

 <!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!--
ORM元数据 表对象关系映射文件
package : 配置该配置文件中类所在的包.
-->
<hibernate-mapping package="cn.coreqi.entities"> <!--
class标签: 配置实体与表的关系
name属性: 实体类类名
table属性: 与实体类对应的数据表名称
dynamic-insert属性: 动态插入 默认值false
true=>如果字段值为null,不参与insert语句
dynamic-update属性: 动态更新 默认值false
true=>没改动过的属性,将不会生成到update语句中
-->
<class name="Users" table="users">
<!-- id标签: 配置实体类与数据表的主键映射
name: 实体类中主键的属性名称
column: 数据表中主键的列名
length: 列的数据长度
unsaved-value(不常用): 指定主键为什么值时,当做null来处理.
access(强烈推荐不要用):field 那么在操作属性时,会直接操作对应的字段而不是get/set方法
-->
<id name="Id" column="Id">
<!-- generator 主键生成策略
1.increment 数据库自己生成主键. 先从数据库中查询最大的ID值,将ID值加1作为新的主键
2.identity 依赖于数据的主键自增功能
3.sequence 序列,依赖于数据中的序列功能(Oracle).
4.hilo(纯了解,永远用不到) : Hibernate自己实现序列的算法,自己生成主键. (hilo算法 )
5.native 自动根据数据库判断,三选一. identity|sequence|hilo
6.uuid 生成32位的不重复随机字符串当做主键
7.assigned 自己指定主键值. 表的主键是自然主键时使用.
-->
<generator class="identity"/>
</id>
<!-- property 实体类属性与数据表中列的映射
name : 实体类中属性名称
column : 数据表中列的名称
length : 数据长度
precision: 小数点后的精度
scale: 有效位数
insert(一般不用): 该属性是否加入insert语句.
update(一般不用): 该属性是否加入update语句.
not-null : 指定属性的约束是否使用 非空
unique : 指定属性的约束是否使用 唯一
type: 表达该属性的类型,可以用三种方式指定属性
Ⅰ: java类型 java.lang.String
Ⅱ: 数据库类型指定 varchar
Ⅲ: Hibernate类型指定 string
-->
<property name="userName" column="UserName" type="string"/>
<property name="passWord" column="PassWord" type="string"/>
<property name="enabled" column="Enabled" type="int"/>
</class> </hibernate-mapping>

添加了注解的实体类(推荐)启动此种方式需要在Hibernate配置文件中启动

62         <!-- Names the annotated entity class -->
63 <!--<mapping class="cn.coreqi.entities.Users"/>-->
 package cn.coreqi.entities;

 import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable; @Entity
@Table(name = "users")
public class Users implements Serializable { @Id
@GeneratedValue(generator="diy")
@GenericGenerator(name="diy", strategy = "identity")
private Integer Id;
@Column
private String UserName;
@Column
private String PassWord;
@Column
private Integer Enabled; public Integer getId() {
return Id;
} public Users() {
} public void setId(Integer id) {
Id = id;
} public String getUserName() {
return UserName;
} public void setUserName(String userName) {
UserName = userName;
} public String getPassWord() {
return PassWord;
} public void setPassWord(String passWord) {
PassWord = passWord;
} public Integer getEnabled() {
return Enabled;
} public void setEnabled(Integer enabled) {
Enabled = enabled;
} @Override
public String toString() {
return "Users{" +
"Id=" + Id +
", UserName='" + UserName + '\'' +
", PassWord='" + PassWord + '\'' +
", Enabled=" + Enabled +
'}';
}
}

(4)编写dao文件

 package cn.coreqi.dao.hibernate;

 import cn.coreqi.entities.Users;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.cfgxml.spi.LoadedConfig;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.springframework.stereotype.Repository; import java.io.File; @Repository
public class UsersHibernate {
//private SessionFactory sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
private final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
private SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
public void addUsers(){
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
Users users = new Users();
users.setUserName("gaoxing");
users.setPassWord("mmmmm");
users.setEnabled(1);
session.save(users);
ts.commit();
session.close();
}
}

Hibernate5.4的环境搭建的更多相关文章

  1. ssh运行环境搭建及测试

    一.运行环境 1.Spring环境 Spring是一站式开发框架,在SSH中主要有以下作用,就像一个大管家: 控制反转(Inversion of Control):类不再自己进行类创建,而是交给Spr ...

  2. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  3. Azure Service Fabric 开发环境搭建

    微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...

  4. rnandroid环境搭建

    react-native 环境搭建具体步骤这个大家已经玩烂了,这个主要是记录下来自己做win7系统遇到的坑 1.com.android.ddmlib.installexception 遇到这个问题,在 ...

  5. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  6. springMVC初探--环境搭建和第一个HelloWorld简单项目

    注:此篇为学习springMVC时,做的笔记整理. MVC框架要做哪些事情? a,将url映射到java类,或者java类的方法上 b,封装用户提交的数据 c,处理请求->调用相关的业务处理—& ...

  7. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  8. Nexus(一)环境搭建

    昨天,成功搭建了自己的 Maven 环境(详见:Maven(一)环境搭建),今天就来研究和探讨下 Nexus 的搭建! 使用背景: 安装环境:Windows 10 -64位 JDK版本:1.7 Mav ...

  9. 「译」JUnit 5 系列:环境搭建

    原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...

随机推荐

  1. 自学Aruba5.3.2-Aruba安全认证-有PEFNG 许可证环境的认证配置MAC

    点击返回:自学Aruba之路 自学Aruba5.3.2-Aruba安全认证-有PEFNG 许可证环境的认证配置MAC 1. MAC认证配置前言 建议把认证通过前的初始化role定义为denyall,否 ...

  2. 沉迷Link-Cut tree无法自拔之:[BZOJ3514] Codechef MARCH14 GERALD07 加强版

    来自蒟蒻 \(Hero \_of \_Someone\) 的 \(LCT\) 学习笔记 $ $ 又是一道骚题...... 先讲一个结论: 假设我们用 \(LCT\) 来做这道题, 在插入边 \(i\) ...

  3. 牛客练习赛 小D的剑阵 解题报告

    小D的剑阵 题意链接: https://ac.nowcoder.com/acm/contest/369/F 来源:牛客网 现在你有 \(n\) 把灵剑,其中选择第i把灵剑会得到的 \(w_i\) 攻击 ...

  4. 洛谷 P2466 Sue的小球 解题报告

    P2466 [SDOI2008]Sue的小球 题目描述 Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船.然而,Sue的目标并不是当 ...

  5. Luogu 1312 【NOIP2011】玛雅游戏 (搜索)

    Luogu 1312 [NOIP2011]玛雅游戏 (搜索) Description Mayan puzzle 是最近流行起来的一个游戏.游戏界面是一个7行5列的棋盘,上面堆放着一些方块,方块不能悬空 ...

  6. A1023. Have Fun with Numbers

    Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, wit ...

  7. java配置、IntelliJ IDEA Ultimate激活、

    1.下载并安装 Java地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html IntelliJ IDEA地址:ht ...

  8. 题解【bzoj4650 [NOI2016]优秀的拆分】

    Description 求对每一个连续字串将它切割成形如 AABB 的形式的方案数之和 Solution 显然 AABB 是由两个 AA 串拼起来的 考虑维护两个数组 a[i] 和 b[i] ,其中 ...

  9. 面向对象【day07】:多态(九)

    本节内容 概述 多态 小结 一.概述 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作 ...

  10. C#网络编程之进程管理

    这里是视频讲解地址: 这里是代码: using System; using System.Collections.Generic; using System.Linq; using System.Ne ...