hibernate入门案例(一)

hibernate和jdbc两种操作数据库的方式相比,hibernate有两个显著优点:

1.不再需要编写sql语句,而是允许采用OO(面向对象)方式来访问数据库。

2.在jdbc访问过程中大量的checked异常被包装成Hibernate的Runtime异常,从而不再要求程序必须处理所有异常。


一、创建数据库和表

1.1 创建数据库

create database hibernate_first

1.2 创建表

DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

二、创建web项目

new->dynamic web project

三、导入jar包

3.1 驱动包

我们操作数据库,首先要导入驱动包。本例用mysql-connector-java-5.1.7-bin.jar

3.2 Hibernate包

hibernate-release-5.0.7.Final\lib\required必须的包
包的简单介绍
hibernate-core-5.0.7.Final.jar核心包
hibernate-commons-annotations-5.0.1.Final.jar注解
javassist-3.18.1-GA.jar底层生成动态代理的代码
dom4j-1.6.1.jar解析xml。Hibernate底层用dom4j写了一些xml文档

2.3 日志包

slf4j-api-1.6.1.jar  日志接口包,没实现。
log4j-1.2.16.jar  具体的日志的实现

slf4j-log4j12-1.7.2.jar  日志接口和日志实现桥梁

导包完成,如下图:


四、创建实体类

package com.hib.domain;

public class User {
	// hibernate的实体类使用包装类,因为,默认值是null。
	// 如果,使用基本数据类型,前端没传数据,默认值就是0.
	private Integer id;
	private String name;
	private Integer age;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}
}

五、创建hibernate映射配置文件(类和表结构的映射)

在JavaBean所在的包下创建映射的配置文件User.hbm.xml
默认的命名规则为:实体类名.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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="com.hib.domain.User" table="t_user">
		<!-- 配置id和property。name属性,JavaBean的属性; column属性,表结构的属性 -->
		<id name="id" column="id">
			<!-- 主键生成策略 -->
			<generator class="native"></generator>
		</id>
		<property name="name" column="name"></property>
		<property name="age" column="age"></property>
	</class>
</hibernate-mapping>
这个配置文件里面的约束可以到如下地方导入


六、编写hibernate核心的配置文件

6.1 在src目录下,创建名称为hibernate.cfg.xml的配置文件

6.2 在XML中引入DTD约束

6.3 配置参数

hibernate-release-5.0.7.Final/project/etc/hibernate.properties,可以查看具体的配置信息
* 必须配置的4大参数 
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username gavin
#hibernate.connection.password
* 数据库的方言(必须配置的)
#hibernate.dialect org.hibernate.dialect.MySQLDialect
* 可选的配置
#hibernate.show_sql true
#hibernate.format_sql true
#hibernate.hbm2ddl.auto update
* 引入映射配置文件(一定要注意,要引入映射文件,框架需要加载映射文件)
<mapping resource="com/hib/domain/User.hbm.xml"/>
<?xml version="1.0" encoding="UTF-8"?>
<!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标签,一个数据库对应一个SessionFactory -->
	<session-factory>
		<!-- 必须配置的4大参数 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///hibernate_first</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">123456</property>

		<!-- 数据库的方言(必须配置的) -->
		<!-- 方言的作用:底层用了什么数据库,告诉hibernate,hibernate会生成对应的sql语句 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

		<!-- 可选的配置 -->
		<!-- 显示sql语句 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 格式化sql语句 -->
		<property name="hibernate.format_sql">true</property>
		<!-- 生成数据库的表结构。hbm2ddl-hbm to ddl,意思是把映射文件去生成数据库定义的语言 -->
		<!-- 1.create,每次都创建一张新的表。开发中不会用的。 -->
		<!-- 2.create-drop,先创建,再删除。根本没什么用嘛! -->
		<!-- 3.create-drop,先创建,再删除。根本没什么用嘛! -->
		<!-- 4.update,如果没有表就创建。有新的字段,会添加到表中。但是javabean中少了属性,不会去删除表中的字段。对于字段,只能加,不能删 -->
		<!-- 5.validate,校验javabean属性和数据库表的字段是不是一致的。 -->
		<!-- 开发一般用update -->
		<property name="hibernate.hbm2ddl.auto">update</property>

		<!-- 引入映射配置文件(一定要注意,要引入映射文件,框架需要加载映射文件) -->
		<mapping resource="com/hib/domain/User.hbm.xml" />
	</session-factory>
</hibernate-configuration>

七、编写Hibernate入门代码

package com.hib.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.hib.domain.User;

public class Demo {

	@Test
	public void testSave() {
		/**
		 * 1.先加载配置文件 
		 * 2.创建SessionFactory对象,生成Session对象。session会话去连接数据库。
		 * 3.创建Session对象 
		 * 4.开启事务 
		 * 5.编写保存的代码 
		 * 6.提交事务 
		 * 7.释放资源
		 */
		
		// 1.先加载配置文件
		Configuration config = new Configuration();
		// 默认加载src目录下hibernate.cfg.xml的配置文件
		config.configure();
		// 2.创建SessionFactory对象
		SessionFactory factory = config.buildSessionFactory();
		// 3.创建Session对象
		Session session = factory.openSession();
		// 4.开启事务
		Transaction tx = session.beginTransaction();
		// 5.编写保存的代码
		User user = new User();
		user.setName("tom");
		user.setAge(23);
		session.save(user);
		// 6.提交事务
		tx.commit();
		// 7.释放资源
		session.close();
		factory.close();
	}
}

执行单元测试,ok

效果如下



源码下载

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值