Hibernate 入门第四课 第一个小例子

1.创建Hibernate的配置文件hibernate.cfg.xml

2.创建持久化类

3.创建对象-关系映射文件

4.通过Hibernate API编写访问数据库的代码

第一步创建配置文件:

首先我是使用hibernate tools工具辅助创建的,不知道怎么安装的请参考我之前的博客:


选中文件src右键 new->other


入门课程按照默认的一直next就行了

这样会自动生成一个hibernate.cfg.xml文件


打开文件

填写配置:(配置文件代码网上很多,建议去官网开发文档中找。复制粘贴后,改一下数据库驱动,账号密码等配置就行了)


<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
		<property name="connection.username">root</property>
		<property name="connection.password">123456</property>

		<!-- JDBC connection pool (use the built-in) -->
		<!-- <property name="connection.pool_size">1</property> -->

		<!-- SQL dialect -->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

		<!-- Echo all executed SQL to stdout -->
		<property name="show_sql">true</property>

		<!-- Enable Hibernate's automatic session context management -->
		<!--<property name="current_session_context_class">thread</property> -->

		<!-- Drop and re-create the database schema on startup -->
		<property name="hbm2ddl.auto">create</property>


上面的数据库连接可以有多种写法下面这两种写法也正确:后面的hibernate是创建的数据库的名字

//略去端口号但是/不能略,所以是三个//。因为mysql的默认端口号是3306.都知道。除非你更改了端口号 才必须写明端口号

<property name="connection.url">jdbc:mysql:///hibernate</property>

第三种写法是:在后面加上字符编码,更国际化防止中文乱码

jdbc:mysql:///hibernate?useUnicode=true&amp;characterEncoding=UTF-8

或者

jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8


注意:

这里我用的是mysql数据库,如果是其它数据库,请自行百度或去官网查找

1:在hibernate配置文件中方言配置“org.hibernate.dialect.MySQLDialect”中的MYSQL那个y要小写。
2:Junit的版本要是4.5会报错,换成4.7就好了
3:如果数据库是本地,hibernate配置文件中的地址这样配置:jdbc:mysql://localhost/hibernate或如上面提到的三种方式中的一种

第二步创建持久化类

持久化类要遵循JavaBean的规范:

⑴ JavaBean 必须放在一个单独的包中

⑵ JavaBean 必须申明为 public class 即:必须是公有的类

⑶ JavaBean 的所有属性必须申明为 private 即:属性必须私有

⑷ 通过 setter 方法和 getter 方法设值和取值    

⑸ 必须有一个公有无参构造方法

⑹ 编写代码要严格遵守 Java 程序的命名规范

例如我创建了一个学生类的持久化类:

package hibernate_001;

import java.util.Date;

public class Student {
	private int id;// 学号
	private String name;// 姓名
	private Date birthday;// 出生日期
	private String address;// 家庭住址

	public Student() {

	}

	public Student(int id, String name, Date birthday, String address) {
		// super();
		this.id = id;
		this.name = name;
		this.birthday = birthday;
		this.address = address;
	}

	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 Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", birthday=" + birthday + ", address=" + address + "]";
	}

}
第三步:创建关系映射文件和数据库:

创建关系映射文件:(创建方法同第一步)如下 new-other-Hibernate-Hibernate XML Mapping file(hbm.xml) 然后一直next就行了




点next


之后操作如下:选择对应的持久化类然后next


注意这里点击next之后如果出现如下提示:(没有这项错误的请跳过)

Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

请做如下操作:

这种错误一般有3个原因

1.jdbc驱动包版本问题或错误

2.数据库配置不正确或服务未启动

3.hibernate 配置问题


不过一般查错 按照 3 2 1的顺序来

我的问题是数据库未启动:(数据库默认是开机自启动的,我之前把自启动关闭了,所以需要手动启动一下)


打开:任务管理器->服务


右键选择启动就行了

但是启动了还是不行,我接着接着hibernate配置问题。

弄啦半天还是不行。推测是版本不匹配的问题:我降低了eclipse的版本

换成了:Version: Luna Service Release 2 (4.4.2)之前是最高的4.6的oxygen那个

注意eclipse降低版本后,hibernate tools 也要降低到与eclipse对应的版本

即:重新安装配置hibernate tools工具:之前已经讲过了,忘记的请回到hibernate 入门教程第二课第三课

同时我又降低了导入的hibernate jar包的版本现在使用的是4.2.4


现在问题解决了(看来以后用软件还是不要用最新的,各种问题版本不匹配。开发项目建议用稍微老一点的稳点版本)


下面接着讲:如下图是工具自动帮我们生成的对象关系映射的文档,如果没有这个工具,我们只能自己写,而且一不小心写错个字母也不好检查。是不是很方便?

映射文档把我们的实体类Student映射为数据库中的一张表,属性映射为表中的字段


注意:下面红框里面的类是我们刚才创建的实体类,默认生成的不会有错,因为我们创建的实体类在默认的包中。如果后来想把实体类的路径该了,比如后来放到了com.edu.model包中:红框中就该改写为com.edu.model.Student。如果不改的话会找不到实体类



映射文档生成后需要加到配置文档hibernate.cfg.xml中 如下图所示



注意:这里因为Student.hbm.xml的路径因为在默认的包中所以全路径就是Student.hbm.xml,

如果持久化类在其它自定义的包中写全路径名就应该这样写:

例如Student.hbm.xml在com.edu.model包中需要这样写

<mapping resource="com/edu/model/Student.hbm.xml" />



创建数据库:注意编码规则,选择utf-8避免出现中文乱码问题




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值