Hibernate入门教程

(一) Hibernate框架简介
Hibernate是数据持久化工具,也是一个开放源码的ORM解决方案。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供面向对象的数据访问API。
Gaving King是Hibernate的创始人,那么他为什么要开发Hibernate框架呢?原因很简单,就是因为觉得开发效率太低 (也就是想偷懒!!!),经过2年努力,Gaving King 和他的开发团队终于推出了Hibernate。

(二) Hibernate是ORM解决方案
基于ORM,Hibernate在对象和关系数据库的表之间建立了一座桥梁,通过Hibernate,程序员就不需要在使用SQL语句操作数据库中的表,使用API直接操作JavaBean对象就可以实现数据的增删改查等操作。

(三) Hibernate框架的优点以及缺点

  • 优点
    1.Hibernate功能强大,是Java应用与关系数据库之间的桥梁,较之JDBC方式操作数据库,代码量大大减少,降低了维护成本。
    2.Hibernate支持许多面向对象的特性(如组合,继承,多态等),方便开发人员进行领域驱动的面向对象的设计与开发。
    3.可移植性好。系统不会绑定在某个特定的关系型数据库上,对于系统更换数据库,通常只要修改配置文件即可。
    4.Hibernate框架开源免费,可以在需要时研究代码,改写代码,提高程序的可扩展性。

  • 缺点
    1.不适合以数据为中心大量使用储存过程的应用
    2.大规模的批量插入,修改和删除不适合用Hibernate

(四) Hibernate环境搭建
1.需要的jar包
这是所需要的jar包
图中的jar包已经打包好了,
链接:https://pan.baidu.com/s/14wH13zcxM_FF0MKZ-L2DXA
提取码:3kin
链接失效联系补发。
将下载好的jar包部署到项目中去。然后进行下一步。
2.创建Hibernate配置文件hibernate.cfg.xml

这个配置文件主要用配置数据库连接和Hibernate运行时所需的各种特性。
在工程的src目录下添加Hibernate配置文件。该文件需要配置数据库连接信息和Hibernate的参数。示例如下:

<!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>
	<!-- 数据库URL -->
		<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
	<!-- 数据库用户 -->
		<property name="connection.username">scott</property>
	<!-- 数据库用户密码 -->
		<property name="connection.password">pan</property>
	<!-- 数据库jdbc驱动 -->
		<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
	<!-- 每个数据库都有其对应的方言(dialect)以匹配其平台特性 -->
		<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
	<!-- 指定当前session范围和上下文 -->
		<property name="current_session_context_class">thread</property>
	<!-- 是否将运行期间生成的Sql输出到日志以供调试 -->
		<property name="show_sql">true</property>
	<!-- 是否格式化 -->
		<property name="format_sql">true</property>
		<mapping resource="cn/pojo/Employee.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

其中几个常用参数的作用如下

  1. connection.url :表示数据库URL。jdbc:oracle:thin:@10.0.0.176:1521:orcl,是Oracle数据库的URL,其中jdbc:oracle:thin;@是固定写法,10.0.0.176是IP地址,1521是端口号,orcl是数据库实例名。
  2. connection.username:表示数据库用户名
  3. connection.password:表示数据库用户密码
  4. connection.driver.class:表示数据库驱动。oracle.jdbc.driver.OracleDriver是Oracle数据库的驱动类。
  5. dialect:用于配制Hibernate使用的数据库类型
  6. current_session_context_class:线程跟踪管理
  7. show_sql:如果设置为true,则程序运行时在控制台输出SQL。
  8. format_sql:如果设置为true,则程序运行时在控制台输出格式化后的SQL语句

ok,环境搭配好以后,接下来就是创建持久化类和映射文件

3.创建持久化类和映射文件

好的,我们先来创建一个持久化类,再来一波示例代码:

//实现Serializable接口,是为了实现实体类序列化
public class Dept implements Serializable{
	/* 字段*/
	/*
	deptNo:用来唯一标识Dept类的每个实例,deptNo属性又称id属性,这个id属性被称为对象标识符。
	*/
	private Byte depNo;
	private String deptName;
	private String location;
	public Dept(){
	}
	//省略getter/setter方法
}

映射文件的创建,示例如下

<!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="cn.hibernatedemo.entity.Dept" table="Dept">
		<id name="deptNo" type="java.lang.Byte" column="deptNo">
			<generator class="assigned"/>
		</id>
		<property name="deptName" type="java.lang.String" column="deptName"/>
		<property name="location" type" type="java.lang.String" column="location"/>
    </class>
</hibernate-mapping>

映射文件中各元素的含义如下
class:定义一个持久化类的映射信息,常用属性如下

  • name表示持久化类的全限定名.
  • table表示持久化类对应的数据库表名

id:表示持久化类的OID和表的主键映射

  • name表示持久化类属性的名称,和属性的访问器相匹配
  • type表示持久化类属性的类型
  • column表示持久化类属性对应的数据库表字段的名称。

注意!映射文件定义完成后,还需要在hibernate.cfg.xml配置文件中声明,示例代码如下:

<!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>
		<!--省略其他配置-->
		<!--映射文件配置,注意文件名必须包含其相对于classpath的全路径-->
		<mapping resource="cn/hibernatedemo/entity/Dept.hbm.xml"/>
	</session-factory>
<hibernate-configuration>

----------------The End

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值