2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

 

目录

 

一、如何使用Hibernate实现“用户添加”?

二、使用Hibernate的“3个准备,7个步骤”

3个准备:

1.准备1:导入相关的包

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)       

  • 下载网站: http://sourceforge.net/projects/hibernate/files/

  • mySQL包(连接数据库驱动的包)

  • 日志相关的包(这里采用log4j-1.2.17.jar和slf4j-log4j12-1.7.7)

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

(1)​​​​打开MyEclipse,选择Workplace(最好记住位置),OK启动。

(2)File->New->Java Project(Project Name设置完毕后点击Finish)

         Project name: hellohibernate(自行命名);

         Location是刚才选定的workplace文件夹位置;

         JDK版本

 

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

 

(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.
  •  导包完成。

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

              

2.准备2:添加配置文件 --  hibernate.cfg.xml (放在src下)

2.1可以在官方文档中找到配置文件内容也可以自行编辑,hibernate-release-5.2.10.Final->project->etc->hibernate.cfg,把hibernate.cfg拖拽到src下,OK。

点击source,会看到如下图:

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

 

 

2.2对其内容进行修改,修改成如下图(过程在此图下有注释):

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

2.3过程:

2.3.1在hibernate-release-5.2.10.Final\project\etc找到hibernate.properties,拖拽过来,选中MySQL下面的这一部分。粘贴复制到hibernate.cfg.xml下,方便配置

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

 

(1)首先第一步配置"方言", 选择org.hibernate.dialect.MySQLInnoDBDialect,可以支持事务操作。( 如果选择org.hibernate.dialect.MySQLDialect,建表可能出现错误!)

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

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

(2)第二步连接数据库的驱动

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

(3)第三步url,配置一定要正确!点击window->Show View->Other...->Database->DB Browser->OK;

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

  • 下方控制栏出现DB Browser,下方右键New设置 

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

 

  •  选择Driver template;

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

 

  • 设置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;

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

  •  User name:root;
  •  Password:123456;

 

  • add JARs选中连接mysql数据库驱动文件夹选中mysql-connect or-java-5.1.6-bin  打开;

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

 

  • Driver classname一定要选择come. mysql. jdbc. Driver;

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

  • Test Driver ->123456(密码)—>OK;

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

 

  • 显示Database connection successfully established,点击OK,点击Finish。

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

  • 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>

 

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

  • 控制台显示和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。

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

(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, 产生读写接口。

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加


 

  • 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;

 

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

(6)ORM中R建立完成。

(7)ORM中的Mapping。根据hibernate.cfg.xml:

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

        在hibernate-release-5.2.10.Final里面找到Simple.hbm复制,粘贴到跟实体类(O)在同一个包里,

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

  •          然后更改Simple.hbm.xml名字为User.hbm.xml(映射文件和类名相同User). 选择Refactor->Rename->OK->New name:User.hbm.xml->OK.

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

  •          hibernate.cfg.xml此处同样更改

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

(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行;

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

 

  • 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

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

  • 查看

 

2021-05-09 Hibernate配置以及使用Hibernate实现用户添加

至此, Hibernate配置以及使用Hibernate实现用户添加全部完成。

上一篇:Java学习笔记在互联网上火了,神操作!


下一篇:Hibernate的配置与添加