Myeclipse2017下 Hibernate入门

PS:这篇教程是在服务器和Mysql已经配置好的情况下完成的

环境:

     1、编译器:Myeclipse2017     

     2、框架:Hibernate 5.1   

     3、服务器:Tomcat 8.5

一、新建Java项目、检查SQL

1、File ->new  选择Java Project

   在编译器右上角地方点击Open Perspective,选择Database Explorer

 

   DB Browser 就会在界面出现 (如果没有出现,点击菜单Window->Show View ->DB Browser),双击进入数据库,可以看到你数据库的一些信息,如果已经配置好的话。

二、新建一些Factory包和测试的文件

factory包:  用来保存等下自动生成的SessionFactory.java

user包:    用来关联数据库数据

demo包  等下用来检查我们的Hibernate是否能正常工作

 然后编写User类:
user下的User 类(需要和数据库对等):

package user;

public class User {
	private Integer user_id;
	private String user_name;
	private String user_password;
	public Integer getUser_id() {
		return user_id;
	}
	public void setUser_id(Integer user_id) {
		this.user_id = user_id;
	}
	public String getUser_name() {
		return user_name;
	}
	public void setUser_name(String user_name) {
		this.user_name = user_name;
	}
	public String getUser_password() {
		return user_password;
	}
	public void setUser_password(String user_password) {
		this.user_password = user_password;
	}
	
}

 

三、安装Hibernate 框架和利用Myeclipse 逆向生成xml配置文件

3.1  安装Hibernate 框架和添加方言

点击项目名称,然后点击右键,找到如下Install Hibernate.(就是自动安装Hibernate)

 

可以选择Hibernate的版本,根据个人情况选择。

点击下一步,在下面Create SessionFactory点上钩,然后点击Browser 选择我们已经新建的factory包(选择自动生成SessionFactory的位置)

点击下一步,然后填上自己已经导入的数据库信息,账号和密码。

然后点击next 然后点击finish。

PS:如果自动生成的*cfg.xml 报错,点击Soure查看原因,没有请跳过这一步。

     我们文件报如下错误:

      The reference to entity "characterEncoding" must end with the ';' delimiter.
     原因,在xml中不能直接使用& 需要转义成  &  其他转义情况点击这里

      全部修改后编译器就没有报错了。下一步

 

我们在自动生成的文件加入方言信息(我使用的是Mysql)其他SQL对应方言点击这里
 

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

3.2 数据库逆向工程自动生成hbm.xml

我们打开前面的DB 找到等下需要关联的表,点击右键,选择Hibernate Reverse Enginnering

选择我们现在所在的工程目录,然后选择我们刚才建立的User

 

中间好像有那个地方的钩点错了,所以我们需要修改下自动生成hbm.xml的一些信息,和我们刚才新建的User 关联起来(好像可以自动生成类,但是我不喜欢那种,所以一般关联手写的类,见谅)

我们需要修改这些信息

1、把user.HibernateUser 改为我们刚才的User等等(不一一阐述了,看图)

    其他修改信息如下图

 

四、编写测试类

我们就测试下对数据库的查询语句把,其他的类似

在demo下新建Demo 类,记得import 一些Hibernate的包

代码如下:
 

package demo;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import user.User;

public class Demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Configuration conf = new Configuration().configure(); //加载配置
		SessionFactory sf= conf.buildSessionFactory();//创建实例
		Session session = sf.openSession(); //得到session 的对象
		Transaction tx = session.beginTransaction();  //开始事务
		Integer id = 132;
		try{
			User user = new User();
			user = (User) session.get(User.class, id); //根据主键查找信息,返回一个User的类
			tx.commit(); //提交事物
			System.out.println("ID:"+user.getUser_id()+"	\nname:"+user.getUser_name()+"	\npassword:"+user.getUser_password());
		}catch (Exception e) {
			// TODO: handle exception
			System.out.println("error!"); //如果出现问题,抛出异常
		}
		finally{
			session.close();
			/*能正常连接JDBC*/
		}
	}
}

然后点击运行结果如下:

我们对照下数据库的信息,

在DB找到我们的表hibernate_user,点击右键

然后点击运行

然后在下面就会看到数据库的信息,两个框框的信息相同,查询成功。

 

PS:

记录一些Hibernate使用抛出的错误:

1、Error during managed flush [identifier of an instance of department.Department was altered from 1703 to 2020]

原因:获得对象后,直接修改对象的所有属性,就出现错误,理由是不能修改可持久化对象的主键。

解决:如果需要插入对象,先new,再插入,再把以前的删除。

2、org.hibernate.InstantiationException: No default constructor for entity

原因:实体类中有带参数的构造方法

解决:new类的时候使用方法一个一个new(还没找到其他方法~)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值