Hibernate(5.2.10)快速入门 (一) 初识Hibernate、框架搭建、xml基本配置

来源:互联网 发布:狼牙军品专卖店一淘宝 编辑:程序博客网 时间:2024/06/05 04:43
        一、初识别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 blocke.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>