Hibernate 简单入门

今天开始我们开始介绍框架 ,第一个Java框架就是Hibernate

Hibernate是什么

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。 – 百度百科

为什么要学习Hibernate

传统的jdbc开发 或者使用dao等开发应用时,大型系统的开发会十分吃力,在大数据的插入时,sql语句很长且容易出错等等。hibernate框架是ORM的,ORM是利用描述对象和数据库表之间映射的元数据,自动把java程序的对象持久化到关系型数据库的表中,通过操作java对象,就可以完成对数据库表的操作。

Hibernate的优势

  • Hibernate对jdbc访问数据库的代码做了轻量级的封装,大大的简化了数据访问层繁琐的重复性代码,并且减少了内存消耗,加快了运行效率。
  • 简化了DAO层的编程工作
  • Hibernate的性能非常好,映射的灵活性很出色,它支持很多关系型数据库。
  • 可扩展性强。

下载Hibernate5

下载Hibernate5 速度特别慢

  • documentation :Hibernate开发的文档
  • lib :Hibernate开发包
    • required :Hibernate开发的必须的依赖包
    • optional :Hibernate开发的可选的jar包
  • project :Hibernate提供的项目

简单使用

我们先需要导入核心包 和数据库包
然后再新建一个持续化类
  • 建立一个拥有和数据库表中的各个属性对应的成员变量的类
  • 这些属性通过get和set来访问
    例如:
public class Student{
	private Long Stu_id;
	private String Stu_name;
	private String Stu_class;
	public Long getStu_id(){
	return Stu_id;
}
....

}
之后我们需要创建映射文件

在位于Student持久化类所在的包中,创建一个名字为Student.hbm.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-mapping>
<!-- 这是建立一个持续化类和数据库表的映射关系-->
<!-- 
	class 标签:用来建立类和表的映射
	 	name属性: 类中的全路径
	 	table属性:表名
	 	catalog属性: 数据库名
	 	-->
<class name="...." table="...." catalog="....">
<!-- 建立类中的属性和表中的普通属性的映射 -->
<!--
	property 标签:建立类的成员变量和表的属性对应
		name属性:类的成员变量
		column属性:表中的属性||如果类和表一样可省略column属性
		length属性:字段长 ,不给就默认(默认比较大)
		type属性:类型 -->
		<id name="..." column="...">
		<!--主键生成策略 -->
		<generator class="native"/>
		</id>
<!-- 建立类中的属性和表中的主键的映射 -->
<!--
	id 标签:建立类的成员变量和表的属性对应
		name属性:类的成员变量
		column属性:表中的属性||如果类和表一样可省略column属性
		length属性:字段长 ,不给就默认(默认比较大)
		type属性:类型 -->
		<property name="..." column="..."/>
		...
	</class>
</hibernate-mappping>
最后我们创建配置文件

位于src下

<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<!-- 配置Hibernate的方言 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
		<!-- 可选配置================ -->
		<!-- 打印SQL -->
		<property name="hibernate.show_sql">true</property>
		<!-- 格式化SQL -->
		<property name="hibernate.format_sql">true</property>
		<!-- 自动创建表 -->
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<!-- 配置C3P0连接池 -->
		<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<!--在连接池中可用的数据库连接的最少数目 -->
		<property name="c3p0.min_size">5</property>
		<!--在连接池中所有数据库连接的最大数目  -->
		<property name="c3p0.max_size">20</property>
		<!--设定数据库连接的过期时间,以秒为单位,
		如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
		<property name="c3p0.timeout">120</property>
		 <!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
		<property name="c3p0.idle_test_period">3000</property>
		
		<mapping resource=""/>
	</session-factory>
</hibernate-configuration>

接下来我们就可以编写程序crud操作

例如

public void funtion(){
// 1. 加载配置文件
Configuration cfg = new Configuration().configure();
//2.创建一个SessionFactory
SessionFactory sessionFactory = cfg.buildSessionFactory();
//3.创建session对象   -- connection
Session session = sessionFactory.openSession();
//4.开启事务
Transaction tx = session.beginTransaction();
//5.做事


//6 事务提交
tx.commit();
//7.释放资源
session.close();
}

猜你喜欢

转载自blog.csdn.net/qq_40435621/article/details/87542607