一、初识别Hibernate
Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate
可以自动生成SQL语句,自动执行,使得我们可以随心所欲的使用对象编程思维来操纵数据库, Hibernate可以应用在任何使用JDBC的场合。
二、框架搭建
Hibernate框架搭建我以举例子的形式一共分四个步骤
1、导Hibernate必需的jar包
2、配置持久层映射
3、配置Hibernate核心配置文件(hibernate.cfg.xml)
4、初始化SessionFactory
1、普通Java项目
1、导Hibernate必需的jar包
Hibernate官网 http://hibernate.org/orm/downloads/
我们从Hibernate官网下载完hibernate压缩包后,解压后进入lib/required目录,这里面的所有jar包都需要导入到我们的项目中去
2、配置持久层
所谓的配置持久层就是把遵循javaBean的Java类与数据库表建立映射关系,为了更加理解,这里我用一个java类来演示一下:
1、遵循JavaBean的TestEntity类
2、映射配置文件
我们创建一个TestEntity.hbm.xml文件,内容如下:
3、配置Hibernate核心配置文件(hibernate.cfg.xml)
在我们的src文件下创建一个名为hibernate.cfg的xml文件,文件中的内容如下所示:
4、初始化SessionFactory
这里我们建一个Test类 运行main方法来初始SessionFactory,至此我们一个hibernate基本框架就搭建好了,当我们的程序运行起来后,hibernate
会根据我们设置的持久层映射文件在数据库创建相应的表。
2、maven项目
maven项目其他配置与普通的Java项目都大致相同,只是我们jar包不需要我们手动添加进去,只需要在我们的maven配置文件pom.xml中添加相应的hibernate的核心依赖即可
hibernate核心依赖:
Hibernate是一个开放源代码的ORM(对象关系映射)框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate
可以自动生成SQL语句,自动执行,使得我们可以随心所欲的使用对象编程思维来操纵数据库, Hibernate可以应用在任何使用JDBC的场合。
二、框架搭建
Hibernate框架搭建我以举例子的形式一共分四个步骤
1、导Hibernate必需的jar包
2、配置持久层映射
3、配置Hibernate核心配置文件(hibernate.cfg.xml)
4、初始化SessionFactory
1、普通Java项目
1、导Hibernate必需的jar包
Hibernate官网 http://hibernate.org/orm/downloads/
我们从Hibernate官网下载完hibernate压缩包后,解压后进入lib/required目录,这里面的所有jar包都需要导入到我们的项目中去
2、配置持久层
所谓的配置持久层就是把遵循javaBean的Java类与数据库表建立映射关系,为了更加理解,这里我用一个java类来演示一下:
1、遵循JavaBean的TestEntity类
package com.example;
public class TestEntity {
private int Tid;
private String Tname;
public TestEntity(){};
public TestEntity(int tid,String tname){
this.Tid=tid;
this.Tname=tname;
}
public TestEntity(String tname){
this.Tname=tname;
}
public int getTid() {
return Tid;
}
public void setTid(int tid) {
Tid = tid;
}
public String getTname() {
return Tname;
}
public void setTname(String tname) {
Tname = tname;
}
}
2、映射配置文件
我们创建一个TestEntity.hbm.xml文件,内容如下:
<?xml version="1.0"?>
<!--
~ Hibernate, Relational Persistence for Idiomatic Java
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--package属性对应于我们java类所在的包名-->
<hibernate-mapping package="com.example">
<!--name对应的Java类的类名(不需要加上包名),table对应数据库与之对应的表名-->
<class name="TestEntity" table="TESTENTITY">
<!-- <id/>标签代主键列,name对应Java类中属性名,column对应数据库中列名(此属性不填写默认Java类中属性名)-->
<id name="Tid" column="Tid">
<!--generator通知Hibernate用于为该实体生成主键值的策略,class值"increment":用于为long, short或者int类型生成唯一标识-->
<generator class="increment"/><!--详细了解generator可去百度科普-->
</id>
<!--property对应除主键外的其他列,其中可以用type属性来设置该列的数据存储类型,如果在映射中未指定type属性,-->
<!--则Hibernate将尝试自动确定正确的转换和映射类型,方法是使用Java反射来确定已声明属性的Java类型,并为该Java类型使用默认映射类型。-->
<property name="Tname" column="TNAME"/> <!--想了解详细type属性值的可以去百度科普一下,这里我就不一一列出了-->
</class>
</hibernate-mapping>
3、配置Hibernate核心配置文件(hibernate.cfg.xml)
在我们的src文件下创建一个名为hibernate.cfg的xml文件,文件中的内容如下所示:
<?xml version='1.0' encoding='utf-8'?>
<!--
~ Hibernate, Relational Persistence for Idiomatic Java
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<!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="connection.driver_class">com.mysql.jdbc.Driver</property>
<!--数据库连接-->
<property name="connection.url">jdbc:mysql://localhost:3306/test1</property>
<!--数据库用户名-->
<property name="connection.username">root</property>
<!--数据库密码-->
<property name="connection.password">123456</property>
<!-- JDBC连接池最大连接数量(使用内置的) -->
<property name="connection.pool_size">1</property>
<!-- 指定与Hibernate进行交互的特定SQL方言。 -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!--禁用二级缓存 -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- 将所有执行的SQL都打印出来 -->
<property name="show_sql">true</property>
<!-- 在启动时删除并重新创建数据库模式 -->
<property name="hbm2ddl.auto">create</property>
<!--将持久类的映射配置文件添加到配置中-->
<mapping resource="com/example/TestEntity.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4、初始化SessionFactory
这里我们建一个Test类 运行main方法来初始SessionFactory,至此我们一个hibernate基本框架就搭建好了,当我们的程序运行起来后,hibernate
会根据我们设置的持久层映射文件在数据库创建相应的表。
package com.example;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
public class Test {
private SessionFactory sessionFactory;
protected void initDataBase() throws Exception {
//为应用程序设置了一个SessionFactory!
final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure() //配置文件来自 hibernate.cfg.xml
.build();
try {
sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
}
catch (Exception e) {
//注册表将被SessionFactory销毁,但是我们在构建SessionFactory时遇到了麻烦,所以手动破坏它。
StandardServiceRegistryBuilder.destroy( registry );
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
Test test=new Test();
test.initDataBase();//初始SessionFactory
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2、maven项目
maven项目其他配置与普通的Java项目都大致相同,只是我们jar包不需要我们手动添加进去,只需要在我们的maven配置文件pom.xml中添加相应的hibernate的核心依赖即可
hibernate核心依赖:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>