idea搭建Hibernate环境,并运行第一个Demo

引言

上文,介绍了Hibernate的基础并未牵扯到实战,通过上文的引子!我们做一个小案例!

向数据库test中的table1插入一条记录!

一,创建数据库,并创建表table1

在这里插入图片描述

二,通过idea创建Hibernate工程

在这里插入图片描述
完成以上操作,点击下一步
在这里插入图片描述
目录结构如图所示
在这里插入图片描述
添加Mysql驱动
在这里插入图片描述

三,创建PO

PO=POJO+持久化注解

import javax.persistence.*;

@Entity//注释声明该类为Hibernate持久化类
@Table(name="table1")//指定映射的表
public class News {
    @Id//用于指定该类的标识属性
    @GeneratedValue(strategy = GenerationType.IDENTITY)//用于指定主键的生成策略,其中strategy属性指定了主键生成策略为IDENTITY策略,也是采用自动增长
    private Integer id;
    private String title;
    private String content;

    public Integer getId() {
        return id;
    }

    public String getTitlel() {
        return title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public void setTitle(String title) {
        this.title = title;
    }

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

代码中注解含义

@Entity//注释声明该类为Hibernate持久化类
@Table(name=“table1”)//指定映射的表
@Id//用于指定该类的标识属性
@GeneratedValue(strategy = GenerationType.IDENTITY)//用于指定主键的生成策略,其中strategy属性指定了主键生成策略为IDENTITY策略,也是采用自动增长

编辑hibernate.cfg.xml文件

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//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.url">jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2b8</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123</property>
        <!--指定数据库方言-->
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <!-- DB schema will be updated if needed -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--在控制台显示SQL语句-->
        <property name="show_sql">true</property>
        <!--将SQL脚本中语句格式化在输出-->
        <property name="hibernate.format_sql">true</property>
        <!--罗列所有的持久化类-->
        <mapping class="News"/>
    </session-factory>
</hibernate-configuration>

运行结果

在这里插入图片描述
在这里插入图片描述

代码解读

       首先开发持久化类,由POJO+持久化注解组成,然后获取Copnfiguration对象,获取SeeionFactory,在获取Session打开事务。用面向对象的方式操作数据库。接着关闭数据库,关闭Session.

PO的三种状态

       瞬态:如果PO 实例从未与Session 关联过,该PO 实例处于瞬态状态。
       持久化:如果PO 实例与Session关联起来,且该实例对应到数据库记录, 则该实例处于持久化状态。
       脱管:如果PO 实例曾经与Session 关联过,但因为Session 的关闭等原因, PO 实例脱离了Session的管理,这种状态被称为脱管状态。

使用ORM框架操作数据库的优点

       不再需要编写SQL 语句,而是允许采用00 方式来访问数据库。
       在JDBC 访问过程中大量的checked 异常被包装成H ibernate 的Runtime 异常,从而不再要求程
序必须处理所有异常。

参考链接:

Exception in thread “main” org.hibernate.exception.GenericJDBCException: Field ‘bookname’ doesn’t ha遇到这个问题不可按此操作,直接在数据库中添加自增。
Exception in thread “main” org.hibernate.MappingException: Unknown entity: XXX
hibernate5.2+ 时区少8小时问题
点击链接加入群聊【程序员技术交流群】:添加链接描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值