您的位置:首页 > 编程语言 > Java开发

Hibernate框架快速入门

2017-09-03 22:36 344 查看
我们分5步来完成对Hibernate的入门

1.Hibernate是什么?

Hibernate是一个轻量级的JavaEE应用的持久层解决方案,是一个全自动的ORM开源框架(全自动:也就是完全不需要写sql语句。什么是ORM:实现面对对象语言中对象映射到面向关系型数据库中的关系数据的一种程序技术)

2.Hibernate能做什么,它的优缺点有哪些?

Hibernate是作用于数据层(Dao层)的框架,它的优点在于不用写sql语句就能实现对数据库的操作,让我们开发更有效率,它的缺点在于相对运行效率较低。(虽然Hibernate针对此有一级缓存,二级缓存,延迟加载等措施,但相对于JDBC来说依然很慢,所以很多对于运行效率要求很高的企业来说还是难以接受)

3.怎么使用Hibernate?

首先我们需要搭建框架,也就是导包,目前Hibernate最经典的版本是3,最新的版本是5,但是5系列并不完善,所以推荐大家使用3。更加稳定。

当我们解压好框架的JAR包后,我们点进去,找到lib,里面有4个文件夹,分别是bytecode,jpa,optional,required,这里除了optional为可选项外,其它三个文件夹里的jar包都需要导入.

框架搭建好之后就需要准备配置文件了,Hibernate的配置文件需要两种,一种是核心配置文件(hibernate.cfg.xml)名字一定要写这个,因为底层是用Final修饰的变量引用了。

另一个配置文件则是映射关系配置文件,也就是用来配置对象映射到数据库中相关数据记录的配置。常规命名为(要映射的类的类名.hbm.xml)。

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">
<!--核心配置文件约束,核心jar包中最下面一个类里,直接复制就行,原谅我懒,不想写名字了-->

<!-- hibernate的核心配置 -->

<hibernate-configuration>
<!-- 所有的配置都在会话工厂中配置,会话工厂缓存了这些配置 -->
<session-factory>
<!-- jdbc相关的东东 :4个东西-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///demo</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1234</property>
<!-- 配置方言: 作用不同的数据库的sql是不同,自动发sql会根据方言来发sql-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 更改连接池为C3P0 ,需要导入C3P0jar包,如果没有请删除此行元素,Hibernate会自动使用默认的连接池,不过默认连接池只建议测试使用-->

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!-- 配置其他属性 -->
<!-- 自动建表 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 自动提交事务 -->
<property name="connection.autocommit">true</property>
<!-- 打印sql -->
<!--  <property name="hibernate.show_sql">true</property>-->
<!-- 格式化sql -->
<property name="hibernate.format_sql">true</property>

<!-- 引入hbm配置文件 -->
<!-- 注意:包中间的分隔符是点,但资源文件的分隔符是斜杠 -->
<mapping resource="cn/itcast/domain/Customer.hbm.xml"/>

</session-factory>

</hibernate-configuration>

(要映射的类的类名.hbm.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"> <!--映射关系配置文件约束,核心jar包中倒数第二个类里,直接复制就行,原谅我懒,不想写名字了-->

<hibernate-mapping>
<class name="cn.itcast.domain.Customer" table="customer">
<!-- oid属性 -->
<id name="id">
<generator class="native"/>
</id>
<!-- 普通属性 -->
<property name="name"/>
<!-- 配置关联集合属性 -->
<!-- 
set标签要和po中属性类型对应
name属性:po中属性名字对应
-->

</class>

</hibernate-mapping>

4.配置好Xml文件后就可以开始使用我们的Hibernate框架了

Hibernate基本运行流畅

 // 读取我们的核心配置文件,new Configuration()只会加载properties文件,configure() 则会加载Xml文件,后面的会覆盖前面的

Configuration configure = new Configuration.configure();

//创建SessionFactory会话工厂,相当于一个连接池,我们从里面获取Session会话

SessionFactory sessionFactory = configure.buildSessionFactory();

//生产Session会话,类似于我们的Connection,底层也确实持久化了一个Connection,但是Connection只是一个连接,而不能直接对数据库进行操作,但是Session可以。

Session session = sessionFactory.openSession;

//开启事务

session.beginTransaction()

//数据库操作

CRUD等操作

//提交事务

session.getTransaction.commit();

//释放资源,关闭连接  Session和SessionFactory

session.close();

sessionFactory().close();

5.Hibernate有哪些对数据库的操作方法,所有操作由Session对象来进行

增:save(Object obj)增加对应实体的一条数据库记录  saveOrUpdate(Object obj)增加或修改对应实体的一条数据库记录

删:delete(Object obj)作为参数的实体对象中必须要有OID,其他属性无所谓。根据此OID删除数据库中对应的记录

改:Update(Object obj)作为参数的实体对象中必须要有OID,其他属性如果不写,会赋默认值,并覆盖数据库中对应的记录

查:get(Object obj.class,Oid),load(Object obj.class,Oid),根据语句查询 creatQuery(hql语句),creatSQLQuery(sql语句) 

明天会对各个方法之间的区别和细节进行深入的探讨,以上文字仅是个人总结,不喜勿喷;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息