学习Hibernate框架--框架搭建及简单使用

在学习Hibernate框架之前首先来了解一下什么是Hibernate框架以及为什么要使用它

Hibernate是

 

一个开源的对象关系映射框架

对JDBC进行了非常轻量级的对象封装

将JacaBean对象和数据库的表建立对应关系

它是一个优秀的Java持久化层解决方案

是当今主流的对象——关系映射工具

它简化了JDBC繁琐的编码,将数据库的连接信息都放置在配置文件中

 

来对比一下传统的JDBC,会发现传统JDBC有一些缺点:

开发效率低

代码冗余(比如pstmt的setXX方法,方法参数冗余的getXX方法,而如果POJO的属性很多,则代码增加)

重复性工作很多

 

所以使用Hibernate框架来进行持久层的操作是很有必要的,接下来了解一下它的使用步骤

1、下载jar包并部署,可以去官网上下载,地址:www.hibernate.org

2、配置一个关于关联实体类的xml文件,以User类为例(User.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">
<!-- package对应实体类的包 -->
<!--实体类的映射文件  -->
<hibernate-mapping>
<!--对应实体类关联数据表,name代表类的路径  -->
	<class name="com.entity.User"	table="h_user">
	<!--id标签代表主键,name表示实体类的属性,column表示数据库中的列,type表示类型  -->
		<id name="id"	column="id"	type="java.lang.Integer">
		<!--生成主键策略  -->
			<generator class="sequence">
				<!--指定序列的名称  -->
				<param name="sequence">seq_h_user</param>
			</generator>
		</id>
		<!-- 其他列的设置,设置方式同主键一样 -->
		<property name="name"	column="name"	 type="java.lang.String"></property>
		<property name="pwd"	column="pwd"	type="java.lang.String"></property>
	</class>
</hibernate-mapping>


3、创建Hibernate配置文件

该文件用于配置数据库连接;运行时所需的各种属性;默认的文件名为“hibernate.cgf.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>
		<property name="hbm2ddl.auto">update</property>
		<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
		<property name="connection.username">hibernate</property>
		<property name="connection.password">123456</property>
		<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
		<property name="hibernate.c3p0.max_size">20</property>
		<property name="hibernate.c3p0.min_size">1</property>
		<property name="hibernate.c3p0.timeout">5000</property>
		<property name="hibernate.c3p0.max_statements">100</property>
		<property name="hibernate.c3p0.idle_test_period">3000</property>
		<property name="hibernate.c3p0.acquire_increment">2</property>
		<property name="hibernate.c3p0.validate">true</property>
		<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
		<property name="show_sql">true</property>
		<mapping resource="com/jredu/entity/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>


接下来就可以使用Hibernate来操作数据库啦,总的来说有这么7个步骤:

package com.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

import com.entity.User;

public class UsrTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		1、读取并解析配置文件
		Configuration cfg=new Configuration().configure();
//		注册服务对象(必须执行此步骤,否则第二步的buildSessionFactory方法无法执行)
		StandardServiceRegistry registry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
//		2、解析映射文件,创建SessionFactory
		SessionFactory factory=cfg.buildSessionFactory();
//		3、打开session
		Session session=factory.openSession();
//		4、增删改需要开启事务
		Transaction tran=session.beginTransaction();
//		(1)添加一条数据
//		User user=new User();
//		user.setName("admin");
//		user.setPwd("123");
////		5、数据库操作
//		session.save(user);
//		(2)更新数据
//		User user=new User();
//		user.setId(4);
//		user.setName("ad");
//		user.setPwd("111");
//		session.update(user);
//		(3)删除数据
//		User user=new User();
//		user.setId(4);
//		session.delete(user);
//		(4)查询数据
		User user=(User) session.get(User.class,5);
		6、提交事务
		tran.commit();
//		7、关闭session
		session.close();
		System.out.println("操作成功");
	}

}

由于第二步的操作版本不支持,所以得先注册服务对象,代码中给出了注释

上面就是使用Hibernate的一些简单的增删改查操作,由于所写出的操作方法过于简单,不能进行复杂的操作,所以企业开发中基本不会使用 ,仅仅作为学习该框架之前的了解,之后会更新利用该框架进行复杂一些的数据库操作
 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章