第一个hibernate程序HelloWorldHibernate

HelloWorldHibernate步骤:

HelloWorld

1,新建java项目hibernate_0100_HelloWorld

2,学习User-library-hibernate,并加入相应的jar包

a)项目右键-build path-configure build path-add  library

b)选择User-library,在其中新建library,命名hibernate

c)在该library中加入hibernate所需的包

  1. /required必须的包
  1. Sl4j jar日志包
  1. bytecode生成二进制字节码需要的

3,引入mysql的JDBC驱动包

4,在mysql中建立对应的数据库及表

a)create  database  hibernate;

b)use  hibernate

c)create table student (id int primary key,name  varchar(20),age  int  );

5,建立hibernate配置文件hibernate.cfg.xnl

a),从参考文档中copy

b),修改对应的数据库连接

c),注释掉暂时用不上的内容

6,建立Student类

7,建立Student映射文件Student.hbm.xml

映射关系:

哪个类-----------------------哪个表

类属性----------------------表字段

a)参考文档

8,将映射文件加入到hibernate.cfg.xml

<mapping resource="com/oracle/hibernate/model/Student.hbm.xml"/>

a)参考文档

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

项目架构:

package com.oracle.hibernate.model;

public class Student {
    private int id;
    private String name;
    private int age;
    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;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

Hibernate.cfg.xml配置文件:

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/hibernate</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>

        <!-- JDBC connection pool (use the built-in) -->
        <!-- hibernate自带的连接池,实际开发一般用applicationserver本身用jndi注册在里面的连接池 -->
        <!-- <property name="connection.pool_size">1</property> -->

        <!-- SQL dialect -->
        <!-- 方言,hibernate已经统一了数据库的访问,他的HQL语句就是官方语言,但不过最终还是翻译成具体不同数据库的sql语句,(搜文档mysql)-->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- Enable Hibernate‘s automatic session context management -->
        <!-- 3.2以后新加的内容,涉及到session。。。 -->
       <!--  <property name="current_session_context_class">thread</property> -->

        <!-- Disable the second-level cache  -->
        <!-- 把二级缓存disable掉,优化hibernate -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <!-- 要不要打印生成的sql语句 -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <!-- hbm(hibernatemapping) ,ddl(建表语句。是否自动生成建表语句)-->
        <!-- <property name="hbm2ddl.auto">update</property> -->

        <mapping resource="com/oracle/hibernate/model/Student.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

Student.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">

<!-- 映射的是哪个package里的类 -->
<hibernate-mapping package="com.oracle.hibernate.model">
<!-- 类到表的映射 类名若和表名一致,table可以省略-->

    <class name="Student">
        <id name="id"></id>
        <property name="name"></property>
        <property name="age"></property>
    </class>

</hibernate-mapping>

Test类:

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

import com.oracle.hibernate.model.Student;

public class StudentTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Student  s = new Student();

        s.setId(3);
        s.setName("student3");
        s.setAge(3);

        /**
         * Configuration.configure()读配置文件的。
         *Document,File,Sting ,Url四种重载方法,默认是读取src下的hibernate.cfg.xml
         */
        Configuration  cfg = new Configuration();

        /**
         * cfg.configure()已经把hibernate.cfg.xml解析了,返回值还是Configuration,
         * 是已经有了配置选项的Configuration对象。
         * buildSessionFactory()暂时理解为产生Connection的一个工厂
         */
        SessionFactory  sf = cfg.configure().buildSessionFactory();
        Session session =  sf.openSession();//打开新的Session

        /**
         * 在hibernate里边的操作都应放在一个事务里
         * session.beginTransaction()返回值Transaction,可以把他存在来。随便
         */
        session.beginTransaction();
        /**
         * save时,先看s是Student类,然后去hibernate.cfg.xml配置文件找
         * <mapping resource="XXX.hbm.xml"/>
         * 看是否有这个配置文件,找到后,看他的映射关系,类和数据库表的映射关系,然后拼成sql语句
         * 自动连数据库,自动生成preparedStatement,自动执行executeUpdate
         */
        session.save(s);

        /**
         * 拿到当前事务,提交
         */
        session.getTransaction().commit();

        session.close(); //关闭session
        sf.close();  //关闭工厂
    }

}

注意:hibernate.cfg.xml名字不能改,约定俗成。Student.hbm.xml放在我们的Model类的包里。

session.save(s);方法执行图示:

save时,先看s是Student类,然后去hibernate.cfg.xml配置文件找 <mapping resource="com/oracle/hibernate/model/Student.hbm.xml"/>,

看是否有这个Student的类配置文件,找到后,看他的映射关系,类和数据库表的映射关系,类的属性和表字段的映射关系。然后拼成sql语句,自动连数据库,自动生成preparedStatement,自动执行executeUpdate,数据就保存到了数据库。

时间: 2024-12-25 08:27:38

第一个hibernate程序HelloWorldHibernate的相关文章

攻城狮在路上(壹) Hibernate(二)--- 第一个hibernate程序

1.直接通过JDBC API持久化实体域对象: A.java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接. Connection:代表数据库连接. Statement:负责执行SQL语句. PreparedStatement:负责执行SQL语句,具有预定义SQL语句的功能. ResultSet:代码SQL查询语句的查询结果集. 2.常用的ORM中间件: Hibernate\Mybatis\Toplink\Torque\ObjectRelationBrid

第一个Hibernate程序

一 新建一个Java工程(Hibernate) 在src目录下创建一个名为"hibernate.cfg.xml"的文件并配置好各个属性,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" &qu

我的第一个Hibernate程序

1.建表建序列(所用数据库为Oracle,数据库名为XE,用户名为system,密码为manager) create table employee ( id number primary key, name varchar2(64) not null, email varchar2(64) not null, hiredate date not null ); create sequence emp_seq start with 1 increment by 1 minvalue 1 nomax

【SSH三大框架】Hibernate基础第一篇:编写第一个Hibernate程序

接下来这几章节学习的是Hibernate,Hibernate的主要作用就是用来和数据库进行连接,简化了JDBC的操作. 首先,我们创建项目,然后把Hibernate的jar包和sqlserver的驱动导入进去. 接下来,我们须要写一个实体类:User package cn.itcast.hibernate.domain; import java.util.Date; public class User { private int id; //private String name; privat

Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解

在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基本配置.核心API的底层实现和源码解析将在以后的博客中一一为大家讲解. 首先我们一起来看一下开发一个hibernate应用程序的大体流程是什么样的(流程顺序可以颠倒): •创建Hibernate的配置文件 •创建持久化类 •创建对象-关系映射文件 •通过Hibernate API编写访问数据库的代码 关于配置

Hibernate 第一个Hibernate应用程序

Chapter 1. Tutorial   第一章 使用说明书 Table of Contents   目录 1.1. Part 1 - The first Hibernate Application   第一节 第一个Hibernate应用程序 1.1.1. Setup   设置开发环境 1.1.2. The first class  创建第一个类 1.1.3. The mapping file  创建类与数据库表的映射文件 1.1.4. Hibernate configuration  Hi

一个Hibernate小程序

基本步骤 在前一篇博文Hibernate环境搭建中为大家详细的介绍如何搭建一个学习新类库的学习环境.今天,为大家带来一个Hibernate小例子,让大家能够快速上手. 步骤如下: 1.配置hibernate.cfg.xml 2.编写映射文件User.hbm.xml 3.编写一个持久化类User.java 4.编写辅助类HibernateUtil.java 5.加载并存储对象UserManager.java 配置Hibernate.cfg.xml a.在新建的XHibernate项目的src目录下

当世界上只剩下一个Java程序员

公元2050年,世界上只剩下了一个Java程序员. 你可能要问了,别的人都去哪儿了?原因很简单, Java没落了. 大约在2030年左右,出现了一个叫做X的语言,它既能做系统级开发(操作系统.数据库.编译器),也能做服务器端的开发,手机端,Web端都不在话下. 更为重要的是,这个新的编程语言和人类的自然语言很接近,无论大人小孩,稍微一学,很快就可以来编程.于是排名前100的语言统统消失了, 程序员们都失业了. Java也不例外,这个昔日的霸主在留下了一堆庞大而复杂的系统以后就不见了. Java程

一个java程序员的真实经历

半路出家的老java程序员的一点感悟 我是一个老java程序员,现在基本告别编码时代了,当然我现在还在写代码,不是为了老板写了,是自己在创业.回想起这么多年的人生路,作为一名老程序员感慨颇多,尤其是作为一名半路出家的程序员,其中的滋味更是感慨万分.下面我就自己说说我的经历,也许会给未来码农一点启发. 首先讲讲我是怎么成为一个程序员的,这个还真要说说中国的教育.我们国家的这种应试教育一直受到很多人的诟病,有的指责扼杀了学生的创造力,有的指责培养出来的学生就像火腿厂生产的香肠,都是一个味毫无特点而言