1、创建Hibernate配置文件(hibernate.cfg.xml)

<?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.username">root</property>

<property name="connection.password">root123</property>

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="connection.url">jdbc:mysql:///hibernate5</property>

<!-- 配置 hibernate 的基本信息 -->

<!-- hibernate 指定数据库所使用的 SQL 方言 -->

<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

<!-- 指定程序运行时是否在控制台输出 SQL 语句 -->

<property name="show_sql">true</property>

<!-- 指定是否对输出 SQL 语句进行格式化 -->

<property name="format_sql">true</property>

<!-- 指定程序运行时是否在数据库自动生成数据表 -->

<property name="hbm2ddl.auto">update</property>

    

     <!-- 指定关联的 .hbm.xml 文件 -->

     <mapping resource="csah/com/cnblogs/www/News.hbm.xml" />

</session-factory>

</hibernate-configuration>

1)问题:生成cfg.xml时候弹出右下角内容,然后按finish一直无反应怎么办??

答:hibernate版本问题,就是第三行Hibernate version那个选择低一点的版本 我看Jar包是4.3.x的,我选了4.3的就OK了

2、创建持久化类

package csah.com.cnblogs.www;

import java.util.Date;

public class News {

private Integer id;

private String title;

private String author;

private Date date;

public Date getDate() {

return date;

}

public News(String title, String author, Date date) {

super();

this.title = title;

this.author = author;

this.date = date;

}

public void setDate(Date date) {

this.date = date;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public News() {

}

@Override

public String toString() {

return "News [id=" + id + ", title=" + title + ", author=" + author + ", date=" + date + "]";

}

}

3、创建对象-关系映射文件(*.hbm.xml)

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!-- Generated 2020-4-25 2:28:16 by Hibernate Tools 3.5.0.Final -->

<hibernate-mapping package="csah.com.cnblogs.www">

<class name="News" table="NEWS">

<id name="id" type="java.lang.Integer">

<column name="ID" />

            <!-- 指定主键的生成方式, native: 使用数据库本地方式 -->

            <generator class="native" />

</id>

<property name="title" type="java.lang.String">

<column name="TITLE" />

</property>

<property name="author" type="java.lang.String">

<column name="AUTHOR" />

</property>

<property name="date" type="java.util.Date">

<column name="DATE" />

</property>

</class>

</hibernate-mapping>

1)问题:ids for this class must be manually assigned before calling save(): csah.com.cnblogs.www.News

答:我们只需要将<generator class="assigned " />设置为<generator class="native" />

4、通过Hibernate API编写访问数据库代码

package csah.com.cnblogs.www;

import static org.junit.jupiter.api.Assertions.*;

import java.sql.Date;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

import org.hibernate.service.ServiceRegistry;

import org.hibernate.service.ServiceRegistryBuilder;

import org.junit.jupiter.api.Test;

import csah.com.cnblogs.www.*;

class HibernateTest {

@Test

public void test() {

System.out.println("test1...");

//1. 创建一个 SessionFactory 对象

SessionFactory sessionFactory = null;

System.out.println("test2...");

//1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和 对象关系映射信息

Configuration configuration = new Configuration().configure();

System.out.println("test3...");

//4.0 之前这样创建

// sessionFactory = configuration.buildSessionFactory();

//2). 创建一个 ServiceRegistry 对象: hibernate 4.x 新添加的对象

//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.

ServiceRegistry serviceRegistry =

new ServiceRegistryBuilder().applySettings(configuration.getProperties())

.buildServiceRegistry();

System.out.println("test4...");

//3).

sessionFactory = configuration.buildSessionFactory(serviceRegistry);

System.out.println("test5...");

//2. 创建一个 Session 对象

Session session = sessionFactory.openSession();

System.out.println("test6...");

//3. 开启事务

Transaction transaction = session.beginTransaction();

System.out.println("test7...");

//4. 执行保存操作

News news = new News("java", "ATGUIGU", new Date(new java.util.Date().getTime()));

System.out.println("test8...");

session.save(news);

System.out.println("test9...");

//5. 提交事务

transaction.commit();

System.out.println("test10...");

//6. 关闭 Session

session.close();

System.out.println("test11...");

//7. 关闭 SessionFactory 对象

sessionFactory.close();

System.out.println("test12...");

}

}

注意:上面的多个system.out.println()可以测试代码运行到哪一部分中断,如如果System.out.println("test9...");没有输出,那么我们只要找session.save(news)的问题即可。

1)问题:org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/cnblogs/com/CSAH/News.hbm.xml

java.lang.ClassNotFoundException: com.nblogs.com.CSAH.News

答:在News.hbm.xml中 class中的路径出现错误 没有找到'com.nblogs.com.CSAH.News'

2)问题:org.hibernate.MappingNotFoundException: resource: com/cnblogs/com/CSAH/News.hbm.xml not found

答:指定关联的 .hbm.xml 文件路径没有找到

3)问题:Duplicate entry 'java' for key 2

答:插入的数据已经存在

02、Hibernate开发步骤的更多相关文章

  1. hibernate 开发步骤

    1 创建Customer表 CREATE TABLE CUSTOMER ( CID int NOT NULL PRIMARY KEY , USERNAME varchar(20) , PASSWORD ...

  2. hibernate学习笔记6--Criteria查询方式、完整小练习(开发步骤)

    一.Criteria查询方式没有sql语了,因此更加面向对象一些.Criteria是一种比HQL更面向对象的查询方式:Criteria的创建方式: Criteria c = s.createCrite ...

  3. Struts2与Hibernate联合开发步骤

    hibernate与struts2的联合开发步骤: 1. 建立web工程 2. 加入jar包,struts2.hibernate.数据库连接的包 3. 数据表和bean之间的映射,以及相应的映射文件* ...

  4. Hibernate+Spring整合开发步骤

    Hibernate是一款ORM关系映射框架+Spring是结合第三方插件的大杂烩,Hibernate+Spring整合开发效率大大提升. 整合开发步骤如下: 第一步:导入架包: 1.Hibernate ...

  5. 以DDD为开发模式的设计开发步骤可以是

    以DDD为开发模式的设计开发步骤可以是:1)分析需求:2)画出用例图,系统中各个角色如何使用系统,也包括外部系统如何使用系统,也包括系统中到某个时间点自动启动的某些功能(此时角色就是时间):3)针对各 ...

  6. Dropwizard入门及开发步骤

    Dropwizard介绍 Dropwizard结构的服务组成 开发步骤 Dropwizard介绍 Dropwizard是一个微服务框架, 是各项技术的一个集成封装.它包含了以下组件: 嵌入式Jetty ...

  7. 一。Hibernate 开发流程

    一.hibernate和mybatis都是orm产品1.orm:object-realation-mapping对象关系映射 二.开发步骤1.导入相关jar 包括hibernate和oracle的驱动 ...

  8. Hibernate入门步骤及概念

    1.什么是Hibernate Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来操纵数据库.Hibernate可以应 ...

  9. 02使用常规步骤编译NanoPiM1Plus的Android4.4.2

    02使用常规步骤编译NanoPiM1Plus的Android4.4.2 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/5 17:51 版本 ...

随机推荐

  1. 小tip:CSS计数器+伪类实现数值动态计算与呈现【转】

    [原文]http://www.zhangxinxu.com/wordpress/2014/12/css-counters-pseudo-class-checked-numbers/ 一.CSS计数器为 ...

  2. 市场清仓价格算法 python求矩阵不同行不同列元素和的最大值

    问题描述 求矩阵不同行不同列元素和的最大值(最小值) 问题求解 1.通过scipy库求解 scipy.optimize库中的linear_sum_assignment方法可以求解 输入一个矩阵,参数m ...

  3. 基于web的图书管理系统设计与实现(附演示地址)

    欢迎访问博主个人网站,记得收藏哦,点击查看 - - - >>>> 公众号推荐:计算机类毕业设计系统源码,IT技术文章分享,游戏源码,网页模板 小程序推荐:网站资源快速收录--百 ...

  4. etc/river.toml

    # MySQL address, user and password # user must have replication privilege in MySQL. my_addr = " ...

  5. 手撸ORM浅谈ORM框架之Update篇

    快速传送 手撸ORM浅谈ORM框架之基础篇 手撸ORM浅谈ORM框架之Add篇 手撸ORM浅谈ORM框架之Update篇 手撸ORM浅谈ORM框架之Delete篇 手撸ORM浅谈ORM框架之Query ...

  6. Graph-GCN

    前言 在大型图中,节点的低维向量embedding被证明了作为各种各样的预测和图分析任务的特征输入是非常有用的.顶点embedding最基本的基本思想是使用降维技术从高维信息中提炼一个顶点的邻居信息, ...

  7. PostgreSQL 报错 Problem running post-install step.Installation may not complete correctlyThe database cluster initialisation failed.

    在点击完next后安装进度条到最后会弹出题目这个错误 之前选择locale选择china/Singapore 或者china/hongkong都会报错 我的解决方案是 不选择,使用默认的就不会报错,并 ...

  8. Java8新特性探索之Lambda表达式

    为什么引入Lambda表达式? Lambda 表达式产生函数,而不是类. 在 JVM(Java Virtual Machine,Java 虚拟机)上,一切都是一个类,因此在幕后执行各种操作使 lamb ...

  9. 把 Console 部署成 Windows 服务,四种方式总有一款适合你!

    一:背景 1. 讲故事 上周有一个项目交付,因为是医院级项目需要在客户的局域网独立部署. 程序: netcore 2.0,操作系统: windows server 2012,坑爹的事情就来了, net ...

  10. 从入门到掌握 - 系统学习shell语言

    简介 什么是 shell Shell是一种程序或命令行解释程序,用于解释用户直接输入的用户命令或从文件中读取的用户命令,然后将 它们传递给操作系统以进行操作或处理.要注意,这个过程是解释而不编译脚本, ...