一、在Eclipse下建立Java工程HibernateDemo

二、新建lib文件夹导入hibernate/ required文件夹下的包以及数据库所需要的包

我下的是hibernate版本为:
hibernate-release-5.2.10.Final
用的是MySQL数据库,包为:
mysql-connector-java-5.1.39-bin.jar

导入之后要BuildPath一下 到 Reference Libraries里。
有的IDE可能会自动导入,这个可忽略

三、建立数据库Student并创建student_table表

CREATE DATABASE studen;
USER student;
DROP TABLE IF EXISTS `student_table`;
CREATE TABLE `student_table` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`age` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

四、创建Student实体类

 package com.pojo;public class Student {private int id;private String name;private int age;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;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

五、创建映射文件

Student.hbm.xml
这个文件要和实体类在同一个包下面

 <?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"><hibernate-mapping><class name="com.pojo.Student" table="student_table"><id name="id" type="integer"><!-- 主键生成策略 --><generator class="native" /></id><!-- 实体类的属性 --><property name="name" type="string" /><property name="age" type="integer" /></class></hibernate-mapping>

这里的头文件可以在下载的hibernate.jar包解压后的文件下搜索 version.hbm.xml

<?xml version="1.0"?>
<!--~ Hibernate, Relational Persistence for Idiomatic Java~~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.-->
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="org.hibernate.test.schemaupdate"><class name="Version"><id name="id"><generator class="sequence"/></id><property name="description"/>   </class></hibernate-mapping>

可以直接复制过来。

六、创建Hibernate配置文件

在src下创建 hibernate.cfg.xml

<!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.url">jdbc:mysql://localhost:3306/student?useUnicode=true&amp;characterEncoding=utf-8</property><property name="connection.username">root</property><property name="connection.password">950420</property><!--数据库方言 指定链接语言 --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 映射Student资源 --><property name="hibernate.show_sql">true</property><mapping resource="com/pojo/Student.hbm.xml" /></session-factory>
</hibernate-configuration>

这里的内容可以在api中直接copy过来。

六、编写测试类


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;import com.pojo.Student;public class StudentTest {public static void main(String[] args) {//1.新建configuration对象Configuration configuration=new Configuration().configure();//configuration.addClass(Student.class);//2.通过configuration创建sessionFactory对象/*StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build();SessionFactory sessionFactory=new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();*/ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();SessionFactory sessionFactory=configuration.buildSessionFactory(serviceRegistry);//3.通过sessionFactory得到sessionSession session=sessionFactory.openSession();//4.通过session对象得到Transaction对象org.hibernate.Transaction transaction=session.beginTransaction();//5.保存数据Student student=new Student();student.setName("沈雪冰");student.setAge(23);session.save(student);//6.提交事务transaction.commit();//7.关闭sessionsession.close();}
}

在这里我出了一个错误,Exception in thread “main” org.hibernate.MappingException: Unknown entity: com.pojo.Student

我相信有很多人会出现这个错误,也是我写这篇博客的初衷。
1.一定要保证你的hibernate.cfg.xml配置文件一定要映射你的实体类

 <mapping resource="com/pojo/Student.hbm.xml" />

在学习hibernate的时候看的书籍或者视频里边用到的hibernate不是最新的,我用的是官方最新版本的,而我看的视频老师讲的是4.3的,版本不一样 API 不一样,导致找不到实体类。

2.hibernate 5 创建 Session,代码如下:

SessionFactory factory = null;
Configuration configuration = new Configuration().configure();
configuration.addClass(News.class);
ServiceRegistry registry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
factory = configuration.buildSessionFactory(registry);
Session session = factory.openSession();注意:
与之前版本不同的:
1)configuration.addClass(News.class);
2)ServiceRegistry的实现需用StandardServiceRegistryBuilder之前版本用的是 ServiceRegistryBuilder

至此,需要加上:

configuration.addClass(Student.class);

这样程序就没问题了。

七、插入数据乱码问题

在我成功测试程序后查看数据库,发现中文是乱码,这个很好解决。

在hibernate.cfg.xml 里的url后面加一句话,这样就不是乱码了

<property name="connection.url">jdbc:mysql://localhost:3306/student??useUnicode=true&amp;characterEncoding=utf-8</property>

org.hibernate.MappingException: Unknown entity常见问题(新手需注意)
导入的包有问题

import org.hibernate.annotations.Entity;//这是就出问题了哦import javax.persistence.Entity;//引入这个类就正确了

相关问题解决链接:
http://www.blogjava.net/xiaochao/articles/hibernatetopic.html

Hibernate 第一个程序的问题Unknown entity(新手必看)相关推荐

  1. zbrush次世代零基础新手必看入门教程第一部分:建模

    zbrush零基础新手必看入门教程.在第一部分中,将向您展示了如何建模...... 欢迎阅读zbrush零基础新手必看入门教程的第一部分.这部分将带您直接开始,并向您展示如何从头开始创建一个吸引人的角 ...

  2. 从Java程序员进阶架构师,必看的书单推荐!

    算法与数据结构: 数据结构(严蔚敏) java数据结构和算法(美:拉佛) 算法导论 大话数据结构 剑指Offer 程序员面试金典 编程珠玑 编程之美 程序员笔试面试最优解 数据结构与算法经典问题解析( ...

  3. lpc2000 filash utility 程序烧写工具_重点必看 | 取证小程序开发之第四届美亚杯硬盘信息快速解题...

    告别金秋十月,迎来仲冬十一月,同时迎来的是首届电子数据取证小程序大赛.随着投稿截止时间的一天天到来,越来越多的用户参与到本次小程序大赛,用自己的力量参与取证知识创新,为营造良好的取证技术生态赋能. 上 ...

  4. java程序员开发app使用uni-app必看文档!

    文章目录 uni-app的基本使用 uni-app介绍 [官方网页](https://uniapp.dcloud.io/resource) 环境搭建 利用HbuilderX初始化项目 运行项目 介绍项 ...

  5. 新手入门吉他推荐,第一把吉他从这十款选绝不踩雷!初学者吉他选购指南【新手必看】

    一.新手购琴注意事项: 1.预算范围 一把合适的吉他对于初学者来说会拥有一个很好的音乐启蒙.选一款性价比高,做工材料.音质和手感相对较好的吉他自然不会是一件吃亏的事.**初学者第一把琴的预算,我觉得最 ...

  6. 小程序商店刷榜_APP推广人必看|全球刷榜价格表单

    刷榜行为一直以来在开发者眼中都是一个较为隐晦的话题,这么久了,小湿妹是没见哪位开发者对着另一位开发者,扯着噪子喊着,咱家的APP刷榜刷的真带劲.但彼此不说,不代表彼此不做.虽然走刷榜捷径有极大的风险, ...

  7. JAVA基础复习1:开始Java世界的第一个程序

    之前,我已经安装好了Java,并且设置好了Java配置.那么来写一段进入Java世界的第一个程序. 1.打开记事本(曾经看过廖大神的一个博客,说是不建议使用Windows自带的记事本,因为有时候会添加 ...

  8. 程序员求职高峰期,这12条工作小技巧必看

    过完春节,该拿的奖金都拿了,又到了一年一度的离职高峰期,新老手程序员纷纷走上了求职之路. 今天给所有程序员提12条工作小技巧,让你在新工作上越做越顺. 1.写文档的能力非常重要 像Spring,hib ...

  9. org.hibernate.MappingException: Unknown entity 该怎么解决

    org.hibernate.MappingException: Unknown e ntity异常是新 手学习hibernate的时候经常遇到的问题. org.hibernate.MappingExc ...

  10. Hibernate出现org.hibernate.MappingException: Unknown entity: com.gxuwz.hiberbate.entity.User的解决办法

    今天在学习Hibernate的时候出现这样的问题 报错信息如下: WARN: HHH000233: Scoping types to session factory org.hibernate.int ...

最新文章

  1. Android 项目版本的修改
  2. php cgi windows7安装,PHP For Windows64位
  3. Mac没有winnt格式_8款优秀软件,让你使用mac更舒适
  4. wxWidgets:wxBookCtrl 概述
  5. Document类型知识大全
  6. 远程包含shell时,上传shell时所遇到一句话木马不能上传问题解决的办法(这里为单引号与双引号问题)
  7. 《netty实战》阅读笔记(2)——Netty 的数据容器ByteBuf
  8. 泛微oa主表赋值明细表_Java学习第89天--OA系统
  9. Qt学习笔记之Hello World
  10. win10隐藏任务栏_win7/10任务栏合并但不隐藏标签
  11. 51单片机简易烧录方法
  12. 012:tkinter+爬虫设计对联软件
  13. 简单文本API的解析(一言)
  14. 移动硬盘数据莫名丢失,如何才能恢复
  15. 网易云音乐登录python
  16. CVPR--2019 AI CITY CHALLENGE (track1成绩A榜第一,综合第二)
  17. USB的红绿黑白线详解
  18. “0基础考生考前三小时突破《申论》80分气哭学霸”——公文题(公文基础理论+方案类+总结类)
  19. 信息管理导论 | 信息组织
  20. 【Tableau 05】表连接方式(四)关系 Relationship

热门文章

  1. .Net与DirectX结合制作泡泡屏保
  2. Oracle 对表空间无操作权限
  3. 雨听 | 英语学习笔记(二)~单词-day 1
  4. iOS小技能:动态地给类添加新的方法、实例变量、属性。( 对已经存在的类在扩展中添加自定义的属性)
  5. Java class对象说明 Java 静态变量声明和赋值说明
  6. 《电动自行车充电领域的液体冷却技术研究》论文笔记
  7. 第2章 变量、数据类型、运算符
  8. ImportError: cannot import name '_validate_lengths'
  9. 文王八卦圖와 易經組織
  10. i7 8700 服务器系统,i7 8700k 云服务器