Hibernate入门

要学习Hibernate,首先要了解ORM,即Object/Relation Mapping,对象-关系映射,就是通过将Java对象映射到数据库表,通过操作Java对象,就可以完成对数据表的操作。Hibernate是最流行的ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL

Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架,提供了对关系型数据库增删改成操作。

Hibernate的优势:

  1. Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
  2. Hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现,它很大程度的简化了dao层编码工作
  3. Hibernate使用java的反射机制
  4. Hibernate的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系

下载hibernate3.x的开发包 (3.6.10)
http://sourceforge.net/projects/hibernate/files/hibernate3/

Hibernate并没有提供日志的实现
所有可以下载slf4j 和 log4j 开发包,整合Hibernate的日志系统到log4j
Slf4j的下载:http://www.slf4j.org/download.html

Hibernate最少需要的jar包介绍:
antlr-2.7.6.jar : 一个语言转换工具,Hibernate利用它实现 HQL 到 SQL 的转换
commons-collections-3.1.jar : collections Apache 的工具集,用来增强Java对集合的处理能力
dom4j-1.6.1.jar : dom4j XML 解析器
hibernate3.jar : Hibernate核心包
hibernate-jpa-2.0-api-1.0.1.Final.jar : JPA 接口开发包
javassist-3.12.0.GA.jar : 代码生成工具, Hibernate用它在运行时扩展 Java类
jta-1.1.jar : 标准的 JAVA 事务(跨数据库)处理接口
mysql-connector-java-5.1.22-bin.jar : 数据库驱动
slf4j-api-1.6.1.jar : hibernate使用的一个日志系统

Hibernate的运行流程:
这里写图片描述

Hibernate的入门demo搭建:

hibernate编写流程:
0 创建web project搭建环境
1 编写javabean
2 给相应的javabean编写配置文件 *.hbm.xml
3 配置hibernate主配置文件,hibernate.cfg.xml
4 调用hibernate的api

Javabean, User.java:

package com.my.bean;

public class User {
	
	private Integer id;		
	private String username;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + "]";
	}

}

hbm, User.hbm.xml(hbm文件必须与相应的类的类名对应,即"类名.h
bm.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 package="com.my.bean" >
	<class name="User" table="t_user">
		<id name="id">
			<!-- hibernate的主键生成策略 -->
			<generator class="native"></generator>
		</id>
		<property name="username" ></property>
	</class>

</hibernate-mapping>

hibernate主配置文件,hibernate.cfg.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>
	<!-- 0 当前Session工厂的配置(相当于连接池) -->
<session-factory>
	<!-- 1 常规配置 -->
	<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
	<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property>
	<property name="hibernate.connection.username">root</property>
	<property name="hibernate.connection.password">1234</property>
	<!-- 方言 hibernate生成sql依据-->
	<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

	<!-- 2 其他配置(格式化sql,显示sql) -->
	<property name="hibernate.format_sql">true</property>
	<property name="hibernate.show_sql">true</property>

	<!-- 3 映射文件中是否自动创建表 (hibernate不能自动的创建数据库)
		create : 每一次运行时都创建表。但如果表存在,则先删除后创建
		create-drop : 每一次运行是都创建表。但如果factory.close();将在执行之后删除表。
		update : 每一次运行更新表结构。
		如果表不存在怎创建。
		如果表没有被修改则不进行任何操作。
		如果表结构修改了,将修改的表字段追加到数据库表中。(hibernate不负责字段的删除,只负责字段变更时的追加)
		validate : 数据库中的表结构,与配置文件的描述不符合时,将抛异常
	-->
	<property name="hibernate.hbm2ddl.auto">update</property>

	<!-- 在javaee 6.0 web项目中,需要将对象验证取消 -->
	<property name="javax.persistence.validation.mode">none</property>

	<!-- 4 添加映射文件-->
	<mapping resource="com/my/bean/User.hbm.xml" />

</session-factory>

</hibernate-configuration>

hibernate的api测试文件,Test.java:

package com.my.bean;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Test {
	
	public static void main(String[] args) {
		Configuration config = new Configuration().configure();
		SessionFactory factory = config.buildSessionFactory();
		Session session = factory.openSession();
		Transaction transaction = session.beginTransaction();
		
		User user = new User();
		user.setUsername("Hibernate Test");
		
		session.save(user);
		
		transaction.commit();
		session.close();
		factory.close();
		
	}

}

hibernate会生成相应的sql语句,与数据库交互。运行测试文件后,控制台会打印一条insert语句,然后把这条数据插入到数据库。这里写图片描述
这里写图片描述

Coding Diary

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值