`
tigers20010
  • 浏览: 48447 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

2009-12-30 传智播客—hibernate基础 (转载)

阅读更多

 

Hibernate是由徐培成老师授课的,传智播客的老师正是我要寻找的那种老师。有丰富的工作经验和项目架构经验。而且他们的教学经验也很丰富!老徐讲课十分精细,他编写的熟练程度也很让人吃惊!        

 

Hibernate,以前老方在讲解JAVAWEB的时候有给我们编写过hibernate的简易实现原理——一对多关系的ORM。当时感觉hibernate并不难,今天学习其实它本来就不难。Hibernate的最困难的地方就是它的那个配置文件。因为hibernate正靠那个配置文件来进行ORM的,也是靠这个配置文件来进行其他的操作,比如创建表格,限制对表或字段的操作

 

         为什么要使用hibernate?老徐今天举了一个十分好的例子:如果你的表中有100个字段,使用JDBC去插入记录、更新记录这是非常恐怖的。如果插入或更新记录出错了呢?一个一个字段的对?想都不感想,如果以后数据库字段要全部添加后缀名呢!~~哇哇哇,受不了了。Okhibernate可以很好的解决JDBC的“漏洞”。

 

         这个配置文件我把它看成是hibernate的核心!

 

         下面我来举个简单的例子,使用hibernate对一个DOMAIN对象进行自动存取。

 

1.定义一个Customerdomain,从学习数据库至今使用顾客与订单做的讲解比较多,因为这种逻辑关系可以很好的阐明多表的关系,我们目前只使用一个表:

public class Customer {

    private int id;

    private String name;

    private int gender;

    private Date birthday;

    private String email;

    private String phone;

    private String address;

//下面是gettersetter方法

}

 

2.Customer的类路径下添加hibernate的映射文件(元数据文件),映射文件名为Customer.hbm.xml,这样在调用“ConfigurationObj. .addClass(Customer.class);hibernate框架可以自动加载它。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 

<hibernate-mapping>

    <!--

    1.name 指定类名

    2.table 指定表名,如果忽略则默认为类名

     -->

    <class name="cn.itcast.cc.hibernate.persistence.Customer" table="customers" lazy="false">

       <!--

       1.name OID的标识名

       2.column 对应表的主键

       3.type hibernate中的类型,对应JAVA类型为java.lang.Integer/int,对应SQL类型为INTEGER

        -->

       <id name="id" column="id" type="integer">

           <!--

           1.class 设置id字段为自增、主键

            -->

           <generator class="increment"></generator>

       </id>

       <!--

       1.name 对应类的属性

       2.column 对应表的字段,如果不指定access。此处的name只为hibernate获取读取字段的方法。

           比如name="abcde"hibernate拼出getAbcdesetAbcde,而此时我们可以添加这两个方法,用于实现特殊功能。

       3.type hibernate中的类型

       4.access hibernate直接访问字段,而不通过gettersetter

        -->

       <property name="name" column="name" type="string" access="field"/>

       <property name="gender" column="gender" type="integer" />

       <property name="birthday" column="birthday" type="date" />

       <property name="phone" column="phone" type="string" />

       <property name="email" column="email" type="string" />

       <property name="address" column="address" type="string" />

    </class>

</hibernate-mapping>

 

3.hibernate的属性文件,使用时请将里面的中文行全部删除:

hibernate.connection.driver_class=com.mysql.jdbc.Driver

hibernate.connection.url=jdbc:mysql://localhost:3306/test

hibernate.connection.username=root

hibernate.connection.password=root

#hibernate使用的本地化特性,比如MySQLOracle的分页技术不同。

#hibernate会根据这项设置,自动完成分页技术。

hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

#回显SQL语句,hibernate根据元数据文件自动生成SQL语句并执行。

hibernate.show_sql=true

#严重注意,如果指定为可以自动创建表,那么每次运行hibernate都会删除并重新创建表。

hibernate.hbm2ddl.auto=create

 

 

4.我们需要向工程中导入hibernate目录下的jar文件。

         1).hibernate3.jar.

2).lib/required/*.jar

3).3rd/*.jar

 

5.编写测试类:

import java.util.Date;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

import cn.itcast.cc.hibernate.persistence.Customer;

 

public class Main {

    private static SessionFactory sefac = null;

    // 当类被加载时,获取SessionFactory

    static {

       //创建Configuration时,默认加载hibernate.properties文件。

       //也可以调用addResource方法,将配置文件加载进来。

       Configuration config = new Configuration();

       // ORM中的O在此添加到

       config.addClass(Customer.class);

       sefac = config.buildSessionFactory();

    }

      

    public static void main(String[] args) {

       // 创建一个customer对象

       Customer customer = new Customer();

       customer.setName("changcheng");

       customer.setGender(1);

       customer.setBirthday(new Date());

       customer.setPhone("13998689955");

       customer.setEmail("changcheng@google.com");

       customer.setAddress("China");

       // 调用保存

       save(customer);

       // 调用查询

       find(1);

    }

   

    private static void save(Customer customer){

       //获取session相当于获取了一个连接

       Session session = sefac.openSession();

       //此处必须使用事务,否则不能保存数据。

       Transaction tr = session.beginTransaction();

       //直接保存

       session.save(customer);

       //提交事务

       tr.commit();

       //关闭会话

       session.close();

    }  

   

    private static void find(Integer id){

       //获取session相当于获取了一个连接

       Session session = sefac.openSession();

       Transaction tra = session.beginTransaction();

       //直接保存

       Customer customer = (Customer) session.load(Customer.class, id);

       tra.commit();

       //关闭会话

分享到:
评论

相关推荐

    传智播客 hibernate PPT 很经典

    传智播客 hibernate PPT 很经典

    传智播客Hibernate课件.ppt

    传智播客Hibernate课件.ppt

    传智播客hibernate源码

    标题"传智播客hibernate源码"暗示了这是一个关于Hibernate框架的源代码学习资源,可能包含了对Hibernate框架内部机制的深入解析,以及如何在实际项目中应用Hibernate的相关示例。 描述中的内容重复,进一步确认了这...

    传智播客hibernate教程

    传智播客hibernate教程.ppt传智播客hibernate教程.ppt传智播客hibernate教程.ppt传智播客hibernate教程.ppt传智播客hibernate教程.ppt

    01_传智播客hibernate教程_hibernate介绍与动手入门体验

    【描述】"传智播客\传智播客hibernate\01_传智播客hibernate教程_hibernate介绍与动手入门体验" 提示这可能是一个由教育机构传智播客提供的系列教程的第一部分,专注于Hibernate的基本概念和实际操作。在这个教程中...

    传智播客 Hibernate源码

    【压缩包子文件的文件名称列表】"00 传智播客hibernate源码"可能包含了一系列逐步讲解的材料,如课件、笔记、代码示例等,这些内容可能按照教学顺序组织,从基础概念到高级特性的实现,引导学习者一步步理解...

    传智播客_hibernate

    通过以上讲解,我们可以看到,传智播客的Hibernate教程覆盖了从基础到进阶的各个方面,为初学者提供了全面的学习资源。掌握Hibernate能够极大地提升Java开发中的数据库操作效率,是Java开发者必备的技能之一。通过...

    传智播客李勇hibernate PPT

    【传智播客李勇hibernate PPT】是一份由知名教育机构传智播客...通过学习这份【传智播客李勇hibernate PPT】,开发者不仅能了解Hibernate的基础知识,还能掌握实际项目中使用Hibernate的技巧,提升开发效率和代码质量。

    传智播客李勇hibernate

    【传智播客李勇hibernate】课程详解了ORM框架Hibernate的核心概念和技术,适合初学者...通过【传智播客李勇hibernate】课程,学习者能够全面掌握Hibernate框架的使用,为开发高效、稳定的Java企业级应用打下坚实基础。

    传智播客Hibernate课件

    传智播客Hibernate课件

    传智播客hibernate ppt

    【标题】"传智播客hibernate ppt"是一份由知名教育机构传智播客推出的关于Hibernate框架的培训教程,由资深讲师李勇主讲。这个PPT内容经典,深受学习者好评,旨在帮助开发者深入理解和掌握Hibernate这一强大的Java...

    传智播客hibernate源码.rar

    本资料主要基于“传智播客hibernate源码.rar”进行深入剖析,旨在帮助你理解Hibernate的核心机制,提升你的编程能力。 一、Hibernate简介 Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常...

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

    传智播客李勇hibernate源码1-20课,目录如下:01_hibernate介绍与动手入门体验;02_hibernate入门案例的细节分析; 03_hibernate入门案例的代码优化; 04_Session接口及get|load|persist方法 05_实体对象的三种状态...

    02_传智播客hibernate教程_hibernate入门案例的细节分析

    通过传智播客的这个教程,初学者将获得对Hibernate基础的全面理解,特别是如何运用到实际的入门案例中。 【描述】:“02_传智播客hibernate教程_hibernate入门案例的细节分析” 此教程详细剖析了Hibernate入门案例...

Global site tag (gtag.js) - Google Analytics