zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【HIBERNATE框架开发之一】搭建HIBERNATE环境并成功运行第一个项目HELLOHIBERNATE并解决3个常出现的运行问题;

hibernate项目框架开发 解决 环境 搭建 运行
2023-09-14 08:59:37 时间
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/hibernate/783.html

OK,从这篇开始Himi将与大家一起进入Hibernate框架的学习啦,新手新手的说,希望大家多多指教;

对于Hibernate概述一下:

”  Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 ”

本篇则简单介绍大家如何配置我们的第一个Hibernate框架环境和第一个项目,HelloHibernate;

——

准备工作:

1. Himi这里使用的一些开发资源如下:

1.1         hibernate-distribution-3.3.2.GA   (hibernate核心包)

1.2         hibernate-annotations-3.4.0.GA   (annotations核心包)

1.3         slf4j-1.5.8       (slf4j 实现库,虽然hibernate核心包中有slf4j的jar包,但是只是api包没有实现)

1.4          mysql-connector-java-3.1.14    (mysql 驱动)

OK了,关于资源下载,大家百度下,当然Himi这里用的不是最新的,刚上手怕最新的自己玩不转~咳咳、

Elipse 中user lib 配置工作:(这里Himi用的mac的eclipse)

我们添加到新建的一个 Java Project里,这里Himi新建的Java项目名:HelloHibernate;

打开你的Eclipse-偏好设置-User Libraries中:

点击 New… 新建,然后输入自定义名称,然后添加Hibernate所需的jar包,jar包一共8个如下:


如下图:

 

OK,搞定之后,然后右键你的项目,然后- Build Path- Add Libraries - User Library- 选择你新建的包含hibernate8个jar包的library即可;

继续右键你的项目Build Path- Add External Archives 将 mysql-connector-java-3.1.14, mysql驱动导入项目中;

MySQL 准备工作:

这里Himi新建一个数据库“hibernate”,新建表“teacher”;对于MySQL不太了解的,请移步到Himi本博客的MySQL相关博文中学习下吧,这里Himi不再赘述了;这里为了后续讲述便于理解,Himi将建立好的show出来让大家过目下;


其中 id  Himi将其设置为 primary key ;

准备工作完成后,我们首先创建两个类,一个入口函数类:

MainTest:


整个项目目录如下图所示:

 

大家先不要在意,  hibernate.cfg.xml 和 Teacher.hbm.xml 这两个文件,下面再详细介绍;

首先我们使用Hibernate就应该先创建Hibernate的配置文件:(这里Himi采用默认此配置名为hibernate.cfg.xml,当然这个配置文件可以自定义名但是这个名字是否采用默认将影响后面我们使用的不同,这个后面将会详细讲解到)

下面是 hibernate.cfg.xml中的内容:


         lt;property name="connection.driver_class" gt;com.mysql.jdbc.Driver lt;/property gt;
         lt;property name="connection.url" gt;jdbc:mysql://localhost/hibernate /property
         lt;!-- JDBC connection pool (use the built-in)  hibernate自带连接池,暂不使用 -- gt;
         lt;property name="dialect" gt;org.hibernate.dialect.MySQLDialect lt;/property gt;          lt;!-- Enable Hibernates automatic session context management 新功能,暂不使用 -- gt;
         lt;!-- lt;property name="current_session_context_class" gt;thread lt;/property gt; -- gt;          lt;!-- Disable the second-level cache  二级缓存,放置不管 -- gt;
         lt;property name="cache.provider_class" gt;org.hibernate.cache.NoCacheProvider lt;/property gt;          lt;!-- Echo all executed SQL to stdout  设置show_sql为true表示让hibernate将生成sql语句在控制台打印出来 -- gt;
         lt;!-- Drop and re-create the database schema on startup 是否让hibernate自动为我们创建表 -- gt;
         lt;mapping resource="com/himi/Teacher.hbm.xml"/ gt; lt;!-- 这里是将需要mapping的文件进行再次声明 -- gt;      lt;/session-factory gt; lt;/hibernate-configuration gt;

这个配置文件我们不要自己写噢,去Hibernate的API文档中找到copy,然后简单针对项目进行设置即可;

OK,配置好这个文件其实就是对hibrenate进行的一些配置而已;

下面我们来看Teacher.hbm.xml文件:

这个文件的目录与Teacher.java默认放置同一级目录,约定俗成没有什么why;那么这个文件是个映射文件,它的主要作用是告诉hibernate我们Teacher类中的属性与数据库的哪些字段匹配;OK,看下其中的内容;

(注意这个文件,在Hibernate文档中也有例子,我们copy过来进行修改不要自己写!)


lt;!--如果你的数据库中的字段名不相同则使用以下形式,例如:class 中 name, 数据库为 _name

 OK, 映射文件写完之后记得要在hibernate的配置文件(hibernate.cfg.xml)中进行声明:


//这里注意了,cfg.configure()读取配置文件的时候,如果你的hibernate的文件名不采用默认的“hibernate.cfg.xml”的话,那么这里传入你定义的配置文件路径
Session ss = sf.openSession();//这里的Session导入import org.hibernate.Session;不要使用class经典的,因为可能会过时

    那么这里再说两点:这里给出3个运行时出现的问题;

 1.  出现 “Host” ‘xxx.xxx.x.xxx’ is not allowed to connect to this mysql server错误;

如下图:

 

解决方法:

允许用户从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码


注意这里by 后单引号内是电脑的user的名字;

3.可能有童鞋第一次运行正常,但是第二次运行则出现  Duplicate entry ‘1’ for key ‘PRIMARY’ 错误;

这个问题是主健重复了的错误~ 因为主键约束: 主键不能为空,也不能重复 !

如果对Mysql不了解的,可以先采用从mysql ,truncate 掉你table的数据,再运行就好了!或者将Teacher对象的ID不要与已存在数据库中的主建id重复即可;

源码下载: “HelloHibernate.zip”      下载地址:  http://vdisk.weibo.com/s/hq1cA


SpringBoot快速搭建、自动流程进阶、装配机制、功能扩展点详解 Spring Boot启动 Spring Boot是Spring旗下的一个子项目,其设计目的是简化Spring应用的初始搭建及开发过程,Spring Boot可以快速启动和运行你的Spring应用服务。 Spring Boot概述 Spring Boot本质上是基于Spring内核的一个快速开发框架,是“约定优先于配置”理念下的最佳实践,通过解析Spring Boot的启动过程,可以帮助我们逐渐了解它的工作机制和其背后整合Spring快速开发的实现原理。
JavaWeb实现smbms项目核心功能 SMBMS 数据库: 项目如何搭建? 考虑使用不使用Maven?依赖,Jar 1、项目搭建准备工作 搭建一个maven web项目 配置Tomcat 测试项目是否能够跑起来 导入项目中会遇到的jar包; jsp,Servlet,mysql驱动,jstl,standard... 创建项目包结构 编写实
Midway 外部版启动过程分析 [Midway](https://midwayjs.org/) 是一个 Egg.js 的拓展框架,他提供了更多 ts 以及依赖注入方面的支持。今天我们来看一下 Midway 的启动过程。 ## Index * before start * midway-bin: CLI startup * midway: cluster startup * midway-web: Applica