目录
2.准备2:添加配置文件 -- hibernate.cfg.xml (放在src下)
3.准备3:添加实体类和映射文件(User.him.xml),通常放在一个目录下面
注:集成开发环境软件:MyEclipse(2017破解版)和mySQL(MySQL Server 8.0)
一、如何使用Hibernate实现“用户添加”?
二、使用Hibernate的“3个准备,7个步骤”
3个准备:
1.准备1:导入相关的包
-
导入Hibernate库(jar包,本人使用包版本是5.2.10)
-
mySQL包(连接数据库驱动的包)
-
日志相关的包(这里采用log4j-1.2.17.jar和slf4j-log4j12-1.7.7)
(1)打开MyEclipse,选择Workplace(最好记住位置),OK启动。
(2)File->New->Java Project(Project Name设置完毕后点击Finish)
Project name: hellohibernate(自行命名);
Location是刚才选定的workplace文件夹位置;
JDK版本
(3)导入所需要的JAR包。
- hellohibernate右键Properties->Java Build Path->add Libraries->User Library->next->User Libraries->New User Library( User library name:hibernatejars)->
- 选中hibernatejars-> Add Extermal JARs(找到hibernate-release-5.2.10.Final文件夹 ->lib->required(全部勾选)->打开->
- 选中hibernatejars-> Add Extermal JARs(找到连接mysql数据库驱动文件夹->mysql-connector-java-5.1.46-bin(勾选)->打开->
- 选中hibernatejars-> Add Extermal JARs(找到log4j日志类包文件夹(全部勾选)->打开->OK
- 选中hibernatejars->Finish->OK.
- 导包完成。
2.准备2:添加配置文件 -- hibernate.cfg.xml (放在src下)
2.1可以在官方文档中找到配置文件内容也可以自行编辑,hibernate-release-5.2.10.Final->project->etc->hibernate.cfg,把hibernate.cfg拖拽到src下,OK。
点击source,会看到如下图:
2.2对其内容进行修改,修改成如下图(过程在此图下有注释):
2.3过程:
2.3.1在hibernate-release-5.2.10.Final\project\etc找到hibernate.properties,拖拽过来,选中MySQL下面的这一部分。粘贴复制到hibernate.cfg.xml下,方便配置
(1)首先第一步配置"方言", 选择org.hibernate.dialect.MySQLInnoDBDialect,可以支持事务操作。( 如果选择org.hibernate.dialect.MySQLDialect,建表可能出现错误!)
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
(2)第二步连接数据库的驱动
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
(3)第三步url,配置一定要正确!点击window->Show View->Other...->Database->DB Browser->OK;
- 下方控制栏出现DB Browser,下方右键New设置
- 选择Driver template;
- 设置Driver name ;
- Connection URL修改成 : jdbc:mysql://localhost:3306/hellohibernate,过程如下:
- dbname(数据库名)为hellohibernate: 打开mysql输入密码,(我在这里,遇到一个问题,就是打开mysql. exe闪退,后来根据去下步骤成功打开:管理员身份打开终端,cmd.,输入cd ..\..\bin指令进入到mysql.exe所在的bin文件位置,输入指定mysql -uroot -p,就可以输入密码,进行操作了)输入指令create database hello hibernate;
mysql -uroot -p;
create database hello hibernate;
- User name:root;
- Password:123456;
- add JARs选中连接mysql数据库驱动文件夹选中mysql-connect or-java-5.1.6-bin 打开;
- Driver classname一定要选择come. mysql. jdbc. Driver;
- Test Driver ->123456(密码)—>OK;
- 显示Database connection successfully established,点击OK,点击Finish。
- url创建完成粘贴 jdbc:mysql://localhost:3306/hellohibernate 到hibernate..cfg.xml下;
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hellohibernate</property>
(4)第四步user name刚才设置的root
<property name="hibernate.connection.username">root</property>
(5)第五步password刚才设置的123456
<property name="hibernate.connection.password">123456</property>
- 控制台显示和mapping对象关系映射文件,后面有 <mapping resource="cn/hrbust/pojo/User.hbm.xml"/>修改过程
<property name="show_sql">true</property>
<mapping resource="cn/hrbust/pojo/User.hbm.xml"/>
- hibernate.cfg.xml
<!--
~ 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-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="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hellohibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="show_sql">true</property>
<mapping resource="cn/hrbust/pojo/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3.准备3:添加实体类和映射文件(User.him.xml),通常放在一个目录下面
(1)src-> new-> class->设置Package和Name->Finish,创建User.java。
(2)在User.java,设置属性和方法 (ORM中O建立):
package cn.hrbust.pojo;
import java.sql.Date;
public class User {
private int id; //id唯一标识一个对象
private String name;
private String gender;
int age;
Date birthday; //此处选中 import 'Date'( java.sql)导包 import java.sql.Date;
}
(3)实体对象要有读写的接口:右键->Source->Generate Getters and Setters->Select All->OK, 产生读写接口。
- User.java
package cn.hrbust.pojo;
import java.sql.Date;
public class User {
private int id; //id唯一标识一个对象
private String name;
private String gender;
int age;
Date birthday; //此处选中 import 'Date'( java.sql)导包 import java.sql.Date;
//产生的读写接口
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
(4)ORM中O建立完成(Object)。
(5)ORM中R(Relative), 建R,建表,打开Mysql,输入3个指建R,建表,打开Mysql,输入3个指令:
use hellohibernate;
create table T_USER(id int not null auto_increment, name varchar(30), gender varchar(30), age int, birthday date,primary key(id));
desc T_USER;
(6)ORM中R建立完成。
(7)ORM中的Mapping。根据hibernate.cfg.xml:
在hibernate-release-5.2.10.Final里面找到Simple.hbm复制,粘贴到跟实体类(O)在同一个包里,
- 然后更改Simple.hbm.xml名字为User.hbm.xml(映射文件和类名相同User). 选择Refactor->Rename->OK->New name:User.hbm.xml->OK.
- hibernate.cfg.xml此处同样更改
(8)打开映射文件User.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>
//映射文件对应的类,数据库的表
<class name="cn.hrbust.pojo.User" table="T_USER">
<id name="id" column="id"> //如果是id_,给出column名。默认也可以不加
<generator class="native"/> //assigned->native
</id>
<property name="name"/>
<property name="gender"/>
<property name="age" />
<property name="birthday" />
</class>
</hibernate-mapping>
7个步骤:
1.使用Hibernate的7个步骤:
- 1.Configuration->2.创建Session Fctory->3.打开Session->4.开始一个事务->5.持久化操作save/update/delete/get->6.提交事务->7.关闭Session
2.src-> new-> class->设置Package:cn.hrbust.dao和Name:manageUser->Finish,创建manageUser.java。
(1)导包选中 import'Configuration'(org.hibernate.cfg)
Configuration cfg =new Configuration().configure();
(2))导包选中import 'SessionFactory'(org.hibernate)
SessionFactory sf=cfg.buildSessionFactory();
(3))导包选中import'Session'(org.hibernate)
Session session=sf.openSession(); //直接用Session保存对象不行
(4))导包选中import'Transaction'(org.hibernate)
Transaction ts=session.beginTransaction();
(5)先创建User对象,因为创建多个对象会耗费资源(资源占用,再创建对象,浪费资源);
import' User'(cn.hrbust.pojo)
User u=new User();
User u=new User();
u.setName("方婷婷");
u.setGender("女");
u.setAge(20);
u.setBirthday(Date.valueOf("2002-9-27"));Configuration cfg =new Configuration().configure();
SessionFactory sf=cfg.buildSessionFactory();
Session session=sf.openSession();
Transaction ts=session.beginTransaction();
session.save(u);//不开事务,不能保存到数据库
ts.commit();
(6)选中下面右键Surrounded With-> Try/catch Block,捕获异常
Configuration cfg =new Configuration().configure();
SessionFactory sf=cfg.buildSessionFactory();
Session session=sf.openSession();
Transaction ts=session.beginTransaction();
session.save(u);//不开事务,不能保存到数据库
ts.commit();
(7)log4j.properties放到src下,hibernate-release-5.2.10.Final->project->etc->log4j.properties ,注释掉如下22行和25行;
- manageUser.java
package cn.hrbust.dao;
import java.sql.Date;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import cn.hrbust.pojo.User;
public class manageUser {
public static void main (String[] args){
//对象的声明引用,因为在try{}里面是局部对象,不方便使用
Configuration cfg =null;
SessionFactory sf=null;
Session session=null;
Transaction ts=null;
User u=new User();
u.setName("张三");
u.setGender("男");
u.setAge(21);
u.setBirthday(Date.valueOf("2001-1-1"));
u.setName("赵楠");
u.setGender("女");
u.setAge(2);
u.setBirthday(Date.valueOf("2002-6-17"));
u.setName("方婷婷");
u.setGender("女");
u.setAge(20);
u.setBirthday(Date.valueOf("2002-9-27"));
try {
cfg =new Configuration().configure(); //configure()读取hibernate.cfg.xml
sf=cfg.buildSessionFactory();
session=sf.openSession();
ts=session.beginTransaction(); //开启事务
session.save(u);//不开事务,不能保存到数据库
ts.commit();
} catch (HibernateException e) { //捕获异常
// TODO Auto-generated catch block
e.printStackTrace();
//异常:回滚
if(ts!=null){
ts.rollback();
}
}finally{
session.close(); //关闭session
sf.close();
}
}
}
- manageUser->main(string[]):void右键->Run As->1 Java Application->OK
- 查看
至此, Hibernate配置以及使用Hibernate实现用户添加全部完成。