`
senton
  • 浏览: 205876 次
  • 性别: Icon_minigender_1
  • 来自: 紫禁城
社区版块
存档分类
最新评论

Hibernate学习笔记

阅读更多

J2EE体系结构分为三层:
1.表示层(JSP/Servlet)
2.业务层(EJB/Session Bean)
3.数据层(JDBC/EJB(Entiry Bean))。
EJB诞生于98/99年,性能存在很大问题,占用服务器资源多,导致机器瘫痪等严重后果.EJB对数据层的解决方案:实体Bean,使用的是代理模式.
EJB3.0:持久层,没有实体Bean,发布于2006年5月8号,吸收了Hibernate的思想,但是EJB必须要在服务器上才能运行,Hibernate脱离服务器.

Servlet存在的问题:编写HTML代码非常困难,2000年5月诞生了Struts解决了表示层的问题.

Hibernate所在的层次:位于数据层,解决怎么连接数据库.更确切的说是解决ORM,性能高,完整的ORM解决方案.它诞生于2001年,是Gavin King

业余时间的作品.从此,java开发人员对EJB的狂热追捧结束。

业务层:2004年出来的Spring解决了业务层的问题.

 调用  调用  调用
Struts-------->Spring-------->Hibernate--------->Database

Hibernate核心思想:将数据库中的数据映射到JavaBean对象上,并可直接将对象属性上的数据写到数据库相应字段上。

下面来开始写第一个Hibernate程序:
1.创建一个JavaBean,User.java,提供一些了getter,setter方法来操作里面的属性,此Bean对应数据库中的users表:
package cn.itcast;

public class User {
 private int id;

 private String name;

 private int age;

 private int gender;
 
 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public int getGender() {
  return gender;
 }

 public void setGender(int gender) {
  this.gender = gender;
 }

 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;
 }
}

2.创建Hibernate配置文件:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
 <!-- SessionFactory配置 -->
 <session-factory>
  <!-- 指定jdbc驱动 -->
  <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  <!-- 指定URL -->
  <property name="connection.url">jdbc:mysql:///hibernate</property>
  <!-- 指定用户名 -->
  <property name="connection.username">root</property>
  <!-- 指定密码 -->
  <property name="connection.password">tianxiangdong</property>
  <!-- 指定MYSQL对应的Dialect以匹配其平台特性 -->
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <!-- 是否将运行期生成的SQL语句输出到控制台 -->
  <property name="show_sql">true</property>
  <!-- 是否格式化输出的SQL语句 -->
  <property name="format_sql">true</property>
  <!-- 映射文件配置,注意文件名必须包含其相对于根的全路径 -->
  <mapping resource="cn/itcast/User.hbm.xml" />
 </session-factory>
</hibernate-configuration>

3.创建类表映射配置文件:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 根元素,这是固定的 -->
<hibernate-mapping>
 <!-- name属性指定映射类名,table属性指定此类所对应的数据库表名-->
 <class name="cn.itcast.User" table="users">
  <!-- id子元素定义了实体的标识列,指定了当前映射类名的id对应表中的id -->
  <id name="id" column="id">
   <!-- 因为各种数据库的标识列生成方式有所不同,这里指定id生成方式 -->
   <generator class="identity" />
  </id>
  <!--
   属性/字段映射,如果名字相同,可以忽略后面的cloumn,
   例如下面的<property name="gender" column="gender" />
   可以换成<property name="gender"/>
  -->
  <property name="name" column="user_name" />
  <property name="age" column="use_age" />
  <property name="gender" column="gender" />
 </class>
</hibernate-mapping>

4.编写客户端的类来测试:
package cn.itcast;

import java.util.Iterator;
import java.util.List;

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

public class Client {

 public static void main(String[] args) {
  /**
   * Configuration负责管理Hibernate配置信息.当我们调用下面这条语句时,
   * Hibernate会在当前的CLASSPATH中搜寻hibernate.cfg.xml文件,并将
   * 其加载到内存中.                                            
   * Configuration对象的configure方法,提供了不同的形式:
   * Configuration configure()
   * Configuration configure(org.w3c.dom.Document document)
   * Configuration configure(File configFile)
   * Configuration configure(String resource)
   * Configuration configure(URL url)
   * 在使用时,可以根据不同的需要做不同的配置。
   */
  Configuration config = new Configuration().configure();

  /**
   * Configuration实例config会根据配置信息构造出SessionFactory实例.
   * Hibernate建议一个应用程序只能有一个SessionFactoty实例
   */
  SessionFactory factory = config.buildSessionFactory();
  
  /**
   * Session是Hibernate持久化操作的基础.它的实例由SessionFactory
   * 负责创建.Hibernate建议一个线程只创建一个session,
   */
  Session session = null;
  
  try {
   session = factory.openSession();

   /**
    * 开始一个事务
    */
   session.beginTransaction();

   /**
    * session的save方法
    */
   // User user = new User();
   // user.setName("lisi");
   // user.setAge(56);
   // user.setGender(0);
   // session.save(user);
   /**
    * get方法
    */
   //User user = (User)session.get(User.class,2);
   /**
    * update方法
    */
   //User user = (User)session.get(User.class,2);
   //user.setAge(33);
   /**
    * delete方法
    */
   //  User user = (User)session.get(User.class,2);
   //  session.delete(user);
   //也可以通过HQL指定删除条件
   //  session.createQuery("delete User where id=2").executeUpdate();

   /**
    * 通过Query接口进行数据查询
    */
   List list = session.createQuery(" from User").list();
   Iterator iterator = list.iterator();
   User user = new User();

   while (iterator.hasNext()) {
    user = (User) iterator.next();
    System.out.println(user.getId() + "\t" + user.getName() + "\t"
      + user.getAge() + "\t" + user.getGender());
   }

   /**
    * 提交事务
    */
   session.getTransaction().commit();
  } catch (Exception e) {
   /**
    * 发生异常则回滚
    */
   session.getTransaction().rollback();
   e.printStackTrace();   
  } finally{
   /***
    * 关闭session
    */
   session.close();
   /**
    *
    */
   session = null;
  }  

分享到:
评论

相关推荐

    Hibernate学习笔记特别详细

    《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...

    hibernate学习笔记

    在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....

    Hibernate学习笔记整理

    Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...

    Java相关课程系列笔记之十四Hibernate学习笔记

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...

    hibernate 学习笔记精要

    hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要

    hibernate学习笔记mashibing

    《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...

    Hibernate 学习笔记(全套)

    这套笔记是我学习Hibernate,进行相关技术点训练时记录下来的,其中包括技术点说明与相关事例,拿出来与大家分享。

    hibernate API帮助文档 及hibernate学习笔记

    Hibernate是一款强大的Java持久...通过阅读这份“Hibernate API帮助文档”和“Hibernate学习笔记”,你将能够深入理解Hibernate的工作原理,掌握其API的使用,并能在实际项目中有效地利用Hibernate进行数据持久化操作。

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    hibernate学习笔记文档

    ### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...

    马士兵hibernate学习笔记

    ### 马士兵 Hibernate 学习笔记概览 #### 一、Hello World 示例 - **简介**:通过简单的示例程序来快速入门 Hibernate 框架。 - **步骤**: 1. 创建 Java 项目 `hibernate_0100_HelloWorld`。 2. 构建 User-...

    JDBC Hibernate学习笔记

    ### JDBC与Hibernate学习笔记 #### 一、JDBC概述 **1.1 ODBC与JDBC的区别** - **ODBC(Open Database Connectivity)**: 开放式数据库连接是一种开放标准的应用程序接口(API),用于实现数据库应用程序与不同...

    hibernate 学习笔记1

    ### 对象持久化与Hibernate学习笔记 #### 一、对象持久化的概念与重要性 - **定义**: 对象持久化是指将程序中的对象状态存储到持久化存储设备上的过程,以便在程序结束运行后仍然可以保留这些数据。 - **必要性**:...

    马士兵hibernate学习笔记(原版)

    《马士兵Hibernate学习笔记》是一份深入浅出的教程,旨在帮助初学者掌握Hibernate这一流行的Java持久化框架。Hibernate是一个对象关系映射(ORM)工具,它允许开发者用面向对象的方式来操作数据库,从而减少了传统...

    hibernate学习笔记.

    【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...

    hibernate 学习笔记3

    标题:Hibernate学习笔记3 描述:本篇笔记深入探讨了Hibernate框架中一对多关系的映射及持久化对象状态管理,结合个人理解与实践经验,旨在为读者提供一份详实的学习资料。 ### 一、一对多关系映射详解 在...

    Hibernate学习笔记!

    **Hibernate学习笔记** Hibernate是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。本笔记将深入探讨Hibernate的核心概念、配置、实体管理、查询语言以及最佳实践...

Global site tag (gtag.js) - Google Analytics