您的位置:首页 > 数据库

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

2017-10-30 12:04 417 查看
在学习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的一些简单的增删改查操作,由于所写出的操作方法过于简单,不能进行复杂的操作,所以企业开发中基本不会使用 ,仅仅作为学习该框架之前的了解,之后会更新利用该框架进行复杂一些的数据库操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息