Hibernate 学习之第一步

来源:互联网 发布:没有淘宝能有支付宝吗 编辑:程序博客网 时间:2024/05/16 13:03

            Hibernate     学习总结之第一步

大笑经过一个星期做左右的学习奋斗,对hibernate 有了“些”了解害羞大笑,于是就写下了这篇文章记录所学所感生气

Hibernate的优势:

1.一个开发源代码的对象关系映射框架

2.对JDBC进行了非常轻量级的对象封装, 简化了JDBC 繁琐的编码

3.将JavaBean对象和数据库的表建立对应

建立了初步的概念后,我们就要动手了,前期我们不要深究为什么。只有在实现的过程中才会有问题,通过解决这些问题,我们才会不断的深入

一.首先我们要做的是搭建项目框架编写hibernate配置文件、实体映射文件












二.创建Hibernate主配置文件(默认文件名为“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"><hibernate-configuration><session-factory><!-- 数据库连接URL --><property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property><!-- 数据库用户名  --><property name="connection.username">username</property><!-- 数据库密码 --><property name="connection.password">passwd</property><!-- 数据库JDBC驱动类名 --><property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><!-- 数据库方言 --><property name="dialect">org.hibernate.dialect.Oracle10gDialect</property><!-- ddl语句自动建表 --><property name="hbm2ddl.auto">none</property><!-- 是否输出Hibernate生成的SQL语句,开发阶段一般需要开启 --><property name="show_sql">true</property><!-- 是否对输出SQL进行格式化 --><property name="format_sql">true</property><!-- 连接池配置 --><property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property><!-- 这是C3P0随时准备好的最少的JDBC连接数量 --><property name="hibernate.c3p0.min_size">5</property><!-- 连接池中JDBC连接的最大数量 --><property name="hibernate.c3p0.max_size">20</property><!-- 超时周期,在它之后,闲置连接将从池中移除 --><property name="hibernate.c3p0.timeout">300</property><!-- 最多高速缓存100个预编译语句,该属性是使Hibernate获得较好性能的要素。 --><property name="hibernate.c3p0.max_statements">100</property><!-- 连接被自动验证前,以秒为单位的闲置时间 --><property name="hibernate.c3p0.idle_test_period">3000</property><!-- 注册ORM实体类映射文件--><mapping resource="实体类映射文件路径" />…</session-factory></hibernate-configuration>实体映射文件格式<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>[...]</hibernate-mapping>


在实体类映射文件中,被映射的类必须定义对应数据库表的主键字段的属性。映射文件的<id>元素定义了该属性到数据库表主键字段的映射


<id  name="propertyName" type="typename">        1

<column="column_name" > </column>                2

<generator class="generatorClass"/>          3

</id>

最后将映射文件的路径信息添加到hibernate.cfg.xml中。

<mapping resource=***/***/***.hbm.xml" />

Hibernate核心接口

1.Configuration接口

Configuration对象用来配置和引导Hibernate,一个Hibernate应用使用一个Configuration实例来指定主配置文件的位置,然后创建会话工厂。

Configuration cfg = new Configuration().configure("/cfg/auction.cfg.xml")

2.SessionFactory接口

一个Hibernate应用从SessionFactory(会话工厂)里获得会话实例。

一般情况下,整个应用只有唯一的一个SessionFactory,它应该在应用初始化时被创建。

3.Session接口

Session(会话)接口是Hibernate应用使用的主要接口,它拥有操作持久化对象的一系列API,可用于管理(例如加载和保存)对象,因此我们也称之为“持久化管理器”。

Session实例是轻量级的,创建与销毁的代价不昂贵,通常我们会为每个事务创建一个Session实例,并在使用后关闭它。

4.Transaction接口

Transaction(事务)接口是对实际事务实现的一个抽象,这些实现包括JDBC事务或者JTA事务等。

Transaction接口中主要定义了commit()rollback()两个方法,前者是提交事务的方法,后者是回滚事务的方法

5.QueryCriteria接口

Query(查询)接口允许在数据库上执行查询,并控制查询如何具体执行。查询使用HQLSQLQuery实例可用来绑定查询参数,限定查询返回的结果数,并且最终执行查询

到这里我们就可以完成初步的对数据库的增删改查。。。。。。。。。。。。。。。。。。。只是初步哦

贴出我的部分代码

public void save() {Session session = factory.openSession();Transaction tx = session.beginTransaction();Type type = new Type("漫画", "你懂得");// 新对象session.save(type);// save-->自动化生成sql语句:inserttx.commit();Session.close}

Hibernate中实体对象的三种状态(非常重要)

1.瞬时状态(Transient)

刚用new语句创建,还没有被持久化,且不处于Session的缓存中

2.持久状态(Persistent)

已经被持久化,且加入到Session的缓存中

3.游离状态(Detached)

已经被持久化,但不再处于Session的缓存中

未完待续偷笑偷笑偷笑。。。。。。。。。。。。。。。

原创粉丝点击