今天开始学习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是区分大小写的.
传智播客--Hibernate基础
最新推荐文章于 2017-11-30 19:59:52 发布