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.Query与Criteria接口
Query(查询)接口允许在数据库上执行查询,并控制查询如何具体执行。查询使用HQL或SQL。Query实例可用来绑定查询参数,限定查询返回的结果数,并且最终执行查询
到这里我们就可以完成初步的对数据库的增删改查。。。。。。。。。。。。。。。。。。。只是初步哦
贴出我的部分代码
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的缓存中
未完待续。。。。。。。。。。。。。。。。
- Hibernate 学习之第一步
- Hibernate学习第一步
- GTest学习之旅第一步
- 学习IOS之oc第一步基础必备
- Hibernate annotation 第一步
- hibernate初学者的第一步
- Hibernate HelloWorld(第一步)
- 【学习方法篇】剖析学习的恶习之 第一步自我认知
- 征服C指针之关于指针学习第一步!!!
- Linux内核学习的第一步之README文档解读
- ExtJS学习之路第一步:对比jQuery,认识ExtJS
- cocos2d-x 学习之路 --第一步环境搭建
- 学习OpenGL入门第一步之画三角形详解
- Hibernate学习之(Hibernate 常用工具)
- hibernate学习之Hibernate API
- Hibernate 第一步(2006-06-05)
- 使用spring、hibernate框架第一步
- 学习FLASH 第一步
- DBA日常工作职责
- in与exists的比较
- C:\Documents%20and%20Settings\Administrator..(系统找不到指定的路径。)
- HDU 2000 ASCII码排序
- 企业级定时任务调度框架Quartz中文文档chm
- Hibernate 学习之第一步
- 建立共享内存和操作共享内存几个函数的用法
- 在android平台下的手机软件界面设计
- 设计模式备忘录:设计原则
- OpenCV Haar分类器人脸检测部分代码注释
- 表单 验证码
- C/C++中内联(inline)函数的优点和缺点
- 关于超长大整数无法使用unsigned int进行存储的问题
- Hibernate学习总结