`

Hibernate的入门知识

 
阅读更多
Hibernate的入门知识
一,hibernate概述
Hibernate 是由JBoss公司著名构架师Gavin King设计,开发的一个开源ORM框架,可以从不同的角度解析Hibernate。
1. 它是连接java应用程序和关系数据库的中间件
2. 它对JDBC  API进行了封装,负责Java对象的持久化
3. 在分层的软件架构中它位于持久化层,封装了所有数据访问细节,使业务逻辑层专注于实现业务逻辑。
4. 它是一种ORM工具,能够建立面向对象的域模型和关系模型的映射。
二.搭建Hibernate应用开发环境
1)下载和安装配置
第一步:下载。登录到Hibernate官方网站http://www.hibernate.org/6.html,下载
第二步:解压获取必需类库文件。解压缩丛Hibernate网站下载的hibernate发布包,在根目录下有Hibernate3.jar文件,该文件就是Hibernate Core的核心类库文件,把它添加到Hibernate应程序中,在根目录lib/required目录下的所有jar文件都是Hibernate3核心类库文件编译和运行所必须的第三方类库文件,也添加到Hibernate应用程序中。如图所示所需的包





三.第一个Hibernate应用程序
我们所做的第一件事就是创建我们的开发目录,并把所需要的java库文件放进去。解压缩丛Hibernate网站下载的Hibernate发布包,并把/lib目录下所有需要的库文件拷到我们新建的开发目录下的/lib目录下。
1) 第一个class
我们的第一个持久化类是一个带有一些属性(property)的简单
1.JavaBean类:
public class User {
private int id;
private Name name;
private Date brithday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
public Date getBrithday() {
return brithday;
}
public void setBrithday(Date brithday) {
this.brithday = brithday;
}

}


你可以看到这个类对属性的存取方法(getter and setter method)使用了标准JavaBean命名约定。同时把类属性的访问级别设为私有的(private),这是推荐的设计,但并不是必须的。Hibernate也可以直接访问这些属性,而使用访问方法的好处是提供了重构时的健壮,为了通过反射机制来实例化这个类的对象,我们需要提供一个无参的构造器。
   所有的持久化类都要求有无参的构造器,因为Hibernate必须使用java反射机制来为你创建对象。构造器的访问级别可以是Private,然而当生成运行时代理时这则要求使用至少package级别的访问控制,这样在没有字节码的指令的情况下,从持久化类里获取数据会更有效率
2.映射文件:
Hibernate需要知道怎样去加载和存储持久化的对象。这正是hibernate映射文件发挥作用的地方,映射文件告诉Hibernate,应该访问数据库里面的哪一个表及应该使用表里面的那些字段。
一起看一下映射文件的基本结构:

<?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>

在hibernate-mapping标签之间,含有一个class元素,所有的持久化实体类(再次声明,或许接下来会有依赖类,就是那些次要实体)都需要一个这样的映射,来把类对象映射到sql数据库里的表
User类对应的映射文件
<hibernate-mapping
package="com.hbsi.domain">--指定java实体类的包名

<class name="User" table="user">---说明实体类怎样映射成表
<id name="id" column="id">--column可省略
<generator class="native"/>--声明主键
</id>
<property name="name"/>
<property name="brithday"/>
</class>

id元素标识符属性的声明,name=”id”声明了java属性的名字(hibernate会使用getId()和SetId()来访为它),column属性则告诉Hibernate,我们使用User表的哪一个字段作为主键,嵌套的generator元素指定了标识符生成策略,在这里我们指定为native。它根据已配置的数据库自动选择最佳的标识符生成策略。
和id元素一样,property元素的name属性告诉hibernate使用哪个getter和setter方法,在此类之中会寻找getName(),getBrithday()
3.Hibernate配置
现在我们已经有了一个持久化类和它的映射文件,该是配置Hibernate的时候了。为了保存Hibernate的配置,我们可以使用一个简单的Hibernate.properties文件,或者一个稍微复杂的Hibernate.cfg.xml。

<!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>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///demo</property>

<property name="connection.username">root</property>
<property name="connection.password">123</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">create</property>
<property name="hibernate.show_sql">true</property>


<mapping resource="com/hbsi/domain/User.hbm.xml"/>

</session-factory>
</hibernate-configuration>

    最开始的四个Property元素包含JDBC链接信息。方言(dialect)的property元素指明Hibernate生成的特定SQL变量。
把这个文件拷贝到源代码目录下面,这样他就位于classpath的根目录的最后。Hibernate在启动时会在classpath的根目录查找名为hibernate.cfg.xml的配置文件。
Hibernate.show-sql:指定是否把hibernate运行时的sql语句输出到控制台。
Hibernate.format_sql:指定是否把hibernate运行时的sql语进行格式化以便于阅读。
Hibernate.Hbm2ddl.auto:指定应用程序在运行时,当产生SessionFactory实例时对是否自动检查数据库结构,可选值有:vaildate(检查数据库结构),update(数据库结构发生变化是修改),create(将数据库的DDL导出到数据库)和crete-drop(SessionFactory实例创建时将数据库schema的DDL导入到数据库,在sessionFactory被显示关闭时将数据库自动删除)
启动和辅助类
是时候加载和储存一些Event对象了,但首先我们得编写一些基础的代码以完成设置。此过程包括创建一个全局sessionFactory,并把它储存在应用程序代码容易访问的地方。SessionFactory可以创建打开新的session,一个session代表一个单线程的单元操作,sessionFactory则是一个线程安全的全局对象,只需要被实例化一次。
我们将创建一个HibernateUtil辅助类来负责启动Hibernate和更方便的操作SessionFactory,让我们来看一下他的实现吧!
package com.hbsi.hibernate.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public final class HibernateUtil {
private static SessionFactory sessionFactory;

private HibernateUtil(){

}
static{

//第一步:读取配置文件并启动hibernate
Configuration cfg=new Configuration();
cfg.configure();
//第二步:获取会话工厂
sessionFactory=cfg.buildSessionFactory();}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();

}
}
把HibernateUtil.java 放在开发目录的源代码路径下,与方User的包并列。
4.加载并存储对象
我们终于可以使用Hibernate来加载和存储对象了,编写一个带有main()方法的TestHibernate类
public class TestHibernate {
public static void main(String[] args) {
User user=new User();
user.setName("Tom");
user.setBrithday(new Date());
addUser(user);
}
public static void addUser1(User user){
Session session=null;
Transaction tx=null;
try{
session=HibernateUtil.getSession();
tx=session.beginTransaction();
session.save(user);

tx.commit();

}finally{

if(session!=null)
session.close();
}
}

}


我们创建了个新的User对象并把它传递给Hibernate。现在Hibernate负责与SQL打交道并把INSERT命令传给数据库。在运行之前,让那个我们来看一下处理session和Transaction的代码。
首先,只要你持有SessionFactory(幸亏我们有HIbernateUtil,可以随时获取得到),大可在任何时候,任何地点调用这个方法
   其次,session在第一次被使用的时候,其生命周期就开始。然后它被Hibernate绑定到当前线程。当事务结束的时候,不管是提交还是回滚,Hibernate会自动把Session从当前线程剥离,并且关闭它。





  • 大小: 90.1 KB
分享到:
评论

相关推荐

    java基础入门之Hibernate 入门

    Hibernate 入门知识

    hibernate入门知识

    hibernate的配置,数据库映射,ORM,对实体类进行添加操作。

    hibernate的一些入门知识

    hibernate的一些入门知识.rar 本人所发布的所有资源,请访问以下地址 http://download.csdn.net/user/hahaomi23&lt;br&gt;http://download.csdn.net/user/hahaomi23&lt;br&gt;&lt;br&gt;希望这些资源对大家有所帮助! 如有...

    hibernate入门必看

    hibernate最基础知识 入门必学 很全面

    Hibernate3.2官方中文参考手册

    Hibernate3.2官方中文参考手册,内容涉及Hibernate入门知识、配置、集合类映射、关联关系映射、组件、事务并发、批量处理、对象事件等知识。

    hibernate知识点总结

    本文档适用于J2EE初学者,主要是针对hibernate部分的知识点进行总结,有助于初学者迅速入门

    hibernate入门课件共24页.pdf.zip

    hibernate入门课件共24页.pdf.zip

    Hibernate快速入门教程

    这个对于初学者是相当有用的一本书,学习梯度不高,适合初学者,语言通俗易懂,知识点明确,虽说没有老外写的高深,但是对于初学者,我觉得太深的东西反而会适得其反,适合的才是最佳的。

    Hibernate入门

    Hibernate入门,介绍了Hibernate的应用和基础知识,希望大家会喜欢,谢谢

    极好的hibernate入门实例

    hibernate very good 包含了所有的基本知识,适合入门学习

    《Hibernate3.2 参考手册》

    Hibernate3.2官方中文参考手册,内容涉及Hibernate入门知识、配置、集合类映射、关联关系映射、组件、事务并发、批量处理、对象事件等知识。

    hibernate中文文档

    Hibernate3.2官方中文参考手册,内容涉及Hibernate入门知识、配置、集合类映射、关联关系映射、组件、事务并发、批量处理、对象事件等知识。

    Hibernate知识总结(从入门到精通)

    Hibernate知识总结(从入门到精通),是我自己一点一点看视屏总结出来的,对于很多比较细小的知识点都总结到位,很适合刚刚入门的新手朋友,也适合各位进行温故知新~

    传智播客李勇hibernate源码1-20课

    02_hibernate入门案例的细节分析; 03_hibernate入门案例的代码优化; 04_Session接口及get|load|persist方法 05_实体对象的三种状态与saveOrUpdate方法 06_完善HibernateUtil类及hql查询入门 07_实体类或属性名...

    hibernate培训入门

    hibernate培训入门,讲述了hibernate的基础知识及每个配置文件的作用和配置文件每个参数的作用

    hibernate 培训讲义

    hibernate 基础知识,对快速入门很有帮助

    Hibernate介绍

    Hibernate介绍,介绍了Hibernate相关的知识点,是入门的一份文档!

    Hibernate 中文API文档

    本章是面向Hibernate初学者的一个入门教程。我们从一个使用驻留内存式(in-memory)数据库的简单命令行应用程序开始, 用易于理解的方式逐步开发。 本章面向Hibernate初学者,但需要Java和SQL知识。它是在Michael ...

Global site tag (gtag.js) - Google Analytics