02、Hibernate开发步骤
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开发步骤的更多相关文章
- hibernate 开发步骤
1 创建Customer表 CREATE TABLE CUSTOMER ( CID int NOT NULL PRIMARY KEY , USERNAME varchar(20) , PASSWORD ...
- hibernate学习笔记6--Criteria查询方式、完整小练习(开发步骤)
一.Criteria查询方式没有sql语了,因此更加面向对象一些.Criteria是一种比HQL更面向对象的查询方式:Criteria的创建方式: Criteria c = s.createCrite ...
- Struts2与Hibernate联合开发步骤
hibernate与struts2的联合开发步骤: 1. 建立web工程 2. 加入jar包,struts2.hibernate.数据库连接的包 3. 数据表和bean之间的映射,以及相应的映射文件* ...
- Hibernate+Spring整合开发步骤
Hibernate是一款ORM关系映射框架+Spring是结合第三方插件的大杂烩,Hibernate+Spring整合开发效率大大提升. 整合开发步骤如下: 第一步:导入架包: 1.Hibernate ...
- 以DDD为开发模式的设计开发步骤可以是
以DDD为开发模式的设计开发步骤可以是:1)分析需求:2)画出用例图,系统中各个角色如何使用系统,也包括外部系统如何使用系统,也包括系统中到某个时间点自动启动的某些功能(此时角色就是时间):3)针对各 ...
- Dropwizard入门及开发步骤
Dropwizard介绍 Dropwizard结构的服务组成 开发步骤 Dropwizard介绍 Dropwizard是一个微服务框架, 是各项技术的一个集成封装.它包含了以下组件: 嵌入式Jetty ...
- 一。Hibernate 开发流程
一.hibernate和mybatis都是orm产品1.orm:object-realation-mapping对象关系映射 二.开发步骤1.导入相关jar 包括hibernate和oracle的驱动 ...
- Hibernate入门步骤及概念
1.什么是Hibernate Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来操纵数据库.Hibernate可以应 ...
- 02使用常规步骤编译NanoPiM1Plus的Android4.4.2
02使用常规步骤编译NanoPiM1Plus的Android4.4.2 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/5 17:51 版本 ...
随机推荐
- centos8平台使用pstree查看进程树
一,pstree用途 Linux pstree命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 systemd 这个基本行程为根 (root) 说明:centos6及更旧版本为 ...
- Seaborn中几种作图方式
趋势 sns.pointplot - 点图 ,比折线图好使 sns.lineplot - 折线图最适合显示一段时间内的趋势,多条线可以用来显示多个组中的趋势. 关系 - 可以使用许多不同的图表类型来理 ...
- 使用C++标准库cout输出枚举类型
由于枚举类型呢,是属于一种标签类型,所以在使用std::cout输出的时候,会导致无法匹配数据类型而导致cout函数失败. 这里给的建议呢就是在想要输出的时候,将枚举类型转换为数据类型就可以啦. 如: ...
- jdk1.8特性2
public class User { private Long id; private String userName; private String roleName; private Strin ...
- golang1.16内嵌静态资源指南
今天是万圣节,也是golang1.16新特性冻结的日子.不得不说自从go2路线发布之后golang新特性的迭代速度也飞速提升,1.16中有相当多的重要更新,包括io标准库的重构,语言内置的静态资源嵌入 ...
- 嵌入式以太网模块的TCP Client模式说明
嵌入式以太网模块采用TTL电平串口,支持TCP Server,TCP Client,UDP Slave,UDP Master,TCP-ZSD,UDP-ZSD多种通信协议,TCP服务器模式支持多连接,可 ...
- 管理Pod(rc,rs,deployment)
1.概述 可以把容器想像成豆荚里的豆子,把一个或多个关系紧密的豆子包在一起就是豆荚(一个Pod).在k8s中我们不会直接操作容器,而是把容器包装成Pod再进行管理. 2.管理Pod a. 使用Repl ...
- 删除指定路径下指定天数之前(以文件的修改日期为准)的文件:forfiles
删除指定路径下指定天数之前(以文件的修改日期为准)的文件:forfiles 代码如下: @echo off ::演示:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件. ::如果演示结果无 ...
- Socket创建简单服务器和客户端程序
使用Socket编程创建简单服务器和客户端 要知道的 Socket-AddressFamily, SocketType, ProtocolType https://blog.csdn.net/weix ...
- (一)http协议介绍
HTTP协议详解 (一) 介绍 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本 ...