传智播客--Hibernate基础

今天开始学习Hibernate了.大家都知道,SSH框架中,Hibernate中是最好上手的,但又是最不好学的.你用一会就能学会 CRUD 但要是想知道其工作原理和细节那就难了.并且配置文件配置很灵活.对于初学者来说,刚开始学习的时候,出了问题总是摸不到头脑.不过今天有老师领着,一步 步的讲解.效率提高了很多.晚上回来对今天学习的知识点进行一下总结.其实,老师有句话,学习 Hibernate 主要就是学习映射文件,映射文件配置好了.hibernate 的开发效率才能大大的体现.

1.为什么用Hibernate
大家都知道现在用的数据库都是关系型数据库.Java是面向对 象编程的语言.这种情况下,就出现了ORM.其中 Hibernate 是其非常优秀的.简单的说,Hibernate就是对JDBC,进行了封装.我们用 Hibernate API 对关系型数据库进行操作.屏蔽一些繁琐的细节.将操作关系型数据库映射成在操作对象.

2. hibernate 中简单 CRUD 核心代码的实现过程
1)怎么样做出第一个 Hibernate的实例程序
要使用 Hibernate,和其他框架是一样的.第一步要将jar包导进项目里.然后就要写配置文件了.配置文件有两种.一种是 properties,另一种是 XML 格式的.在开发中经常使用的是 XML 格式的.
2)常用配置项的说明
hibernate.dialect=net.sf.hibernate.dialect.OracleDialect
方 言的配置项,Hibernate用这个来区分不同的数据库.比如,不同的数据库在分页的时候是不一样的.这里,他就起到了作用.这个配置项不配置,也是可 以的,Hibernate可以分析出是什么数据库,不过在有些时候可能出现,所以最好配置上.是Hibernate特有的,在JDBC中是没有的.
hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
Oracle 数据库的驱动配置.和JDBC中的一样的道理.在用JDBC操作数据库中也是需要的.Hibernate是对JDBC的封装,所以这个选项是必须配置的.
hibernate.connection.url=jdbc:oracle:thin:peopres/peopres@127.0.0.1:1521:oracle9
Oracle 数据库的URL.和JDBC中也是一样的.
hibernate.connection.username=peopres
登陆数据库用户 名,必须配置
hibernate.connection.password=peopres
登陆数据库密码.
hibernate.show_sql=true
这 个是在Hibernate对数据库进行操作的时候,是否显示相关的SQL语句.在生产环境下是不能打开的.他在一定层度上影响效率.在开发和调试中,最好 打开,方便调试和性能的分析.
这些配置项是最常用到的.

3)Hibernate还有另一个配置文件要配置,对象关系映射文件.这个文件是关系型数据库,和Java类对象中间的一个桥梁.
Java 对象,经常叫做domain对象,就是领域模型.
public class Person {
    private int id ;
    private String name;
    public int getId() {
       return id;
    }
    public void setId(int id) {
       this.id = id;
    }
    public String getName() {
       return name;
    }
    public void setName(String name) {
       this.name = name;
    }
}
这个Java对象对应的 配置文件,Person.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.itcast.hibernate.Person" table="hib_person" lazy="false">
       <id name="id" column="id" type="integer">
           <generator class="increment" />
       </id>
       <property name="name" column="name" length="20"/>
    </class>
</hibernate-mapping>
总 结:
Class中的name是对应类的包名加类名.table是对应数据库中的表名.
Id中是主键,同样name 是对应的Java对象属性名,column对应表中列名.
Generator是生成的主键策略.这里主键分为自然主键和代理主键.自然主键是要手 动输入的.代理主键是自动生成的.如自增长,对不通是数据库就有不同是策略.
Property是配置一般属性.nameJava对象属性 名,column列名.length对应数据库中列的长度.

4)接下来,将配置文件加载到项目中.
我们写一个工具 类.SessionFactory 是重量级对象,所有我们要写到 static 块中.只初始化一次.它是线程安全的.
private static SessionFactory sf = null ;
    static{
       try {
           //将属性文件载入内存
           Configuration conf = new Configuration();
           //添加映射文件   
           conf.addClass(Person.class);
           sf = conf.buildSessionFactory();
       } catch (Exception e) {
           e.printStackTrace();
       }
    }

5)最后一步,保存对象的核心代码.要注意,这个代码并不完善,只是核心代码.是方便 初次接触 Hibernate 的同学理解.没有加上异常处理等.
public static void insertPerson(Person c){
       Session s = sf.openSession();
       Transaction tx = s.beginTransaction();
       s.save(c);
       tx.commit();
       s.close();
    }

经过以上几步,我们就方便的把 Person 对象保存到了数据库中,整个过程我们都是在操作 Java 对象.这个和 JDBC 比起来,效率提高了不少吧.而且出色的体现了 OOP 思想.
除了 save() 方法,还有 update(),delete(),get(),load()...

在使用Hibernate中,还要注意一下.在配置映射文件 时,name区分大小写,table不区分大小写,type是区分大小写的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值