初学Hibernate---笔记(一)


最近在看视频学习Hibernate,之前上课已经学习了MyBatis,这两个框架都是数据持久层的ORM(Object/Relational Mapping)框架。
Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。

首先还是放上官方学习资料:http://docs.jboss.org/hibernate/core/3.6/reference/zh-CN/html_single/

什么是Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合, 既可以在Java的客户端程序使用,也可以在ServietJSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP, 完成数据持久化的重任。

优点

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

搭建Hibernate开发环境

一、官网下载Hibernate

解压后目录结构如下:
在这里插入图片描述
Hibernate项目必须Jar包:
在这里插入图片描述

二、编写JavaBean + 映射文件

bean类属性名尽量和数据库字段名保持一致,必须提供id。

数据库和表:

create database mydb;#创建数据库mydb
use mydb;
#创建user表
create table user(
id int auto_increment primary key,
username varchar(50),
password varchar(30)
);

bean类:
public class User {
	private Integer id;
	private String username;
	private String password;
	
	get/set...
映射文件:
<!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="bean类全名(包名.类名)" table="user">
		<!-- 主键 -->
		<id name="id">
			<!-- 固定值:主键生成策略 -->
			<generator class="native"></generator>
		</id>
		
		<!-- 普通属性 -->
		<property name="username"></property>
		<property name="password"></property>
	
	</class>
</hibernate-mapping>

三、编写核心配置文件

<!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>
		<!-- 基本4项 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydb</property>
		<property name="hibernate.connection.username">账号</property>
		<property name="hibernate.connection.password">密码</property>
	
		<!-- 添加映射文件 -->
		<mapping resource="映射文件所在位置"/>
	</session-factory>

</hibernate-configuration>

四、测试

@Test
public void test1(){
		User user = new User();
		user.setUsername("张三");
		user.setPassword("123");
		
		//1 加载配置文件获得核心配置对象
		Configuration config = new Configuration().configure();
		
		//2 获得工厂 SessionFactory,相当于连接池
		SessionFactory factory = config.buildSessionFactory();
		
		//3获得会话session,相当于链接Connection
		Session session = factory.openSession();
		
		//4 开启事务
		Transaction transaction = session.beginTransaction();
		
		//操作
		session.save(user);
		
		//5 提交事务 | 回滚事务
		transaction.commit();
		//6 释放资源--关闭session
		session.close();
		//7 释放资源--关闭工厂factory
		factory.close();
	}

附一个工具类

public class HUtils {
	
	// 会话工厂,整个程序只有一份。
	private static SessionFactory factory;

	static{
		//1 加载配置
		Configuration config = new Configuration().configure();
		
		//2 获得工厂
		factory = config.buildSessionFactory();
	//3 关闭虚拟机时,释放SessionFactory
			Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
			
			@Override
			public void run() {
				System.out.println("虚拟机关闭!释放资源");
				sf.close();
			}
		}));
	}
	
	//获得session
	public static Session openSession(){
		return factory.openSession();
	}
	
	/**
	 * 获得当前线程中绑定session
	 * * 注意:必须配置
	 * @return
	 */
	public static Session getCurrentSession(){
		return factory.getCurrentSession();
	}
	
}

想要学习好hibernate,还是要多练。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值