Hibernate笔记(一):入门

Hibernate简介

  hibernate是面向java开发环境的对象/关系映射工具,用于把对象关系模型表示的对象映射到基于SQL的关系模型的数据结构中。hibernate还提供数据查询和数据获取的方法,可以大幅减少开发时人工使用SQL和JDBC处理数据的时间。

hibernate入门demo

  1. 开发环境的搭建:

    1)导包:hibernate核心jar包 + 数据库连接池c3p0包 + MySQL数据库驱动jar包

    2)编写hibernate的配置信息文件:hibernate.cfg.xml

    3)编写持久化对象类(PO  persistence-object)

项目工程结构:

  

hibernate.cfg.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC   "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <!-- 指定连接数据库的驱动和url -->
        <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">1234</property>

        <!-- 设置数据库连接池参数 -->
        <!-- 数据库连接池中的最大和最小连接数-->
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.mix_size">1</property>
        <!-- 数据库连接超时时长 -->
        <property name="hibernate.c3p0.timeout">5000</property>

        <!-- 指定缓存池里缓存多少个statement对象 -->
        <property name="hibernate.c3p0.max_statements">100</property>
        <property name="hibernate.c3p0.idle_test_period">3000</property>
        <property name="hibernate.c3p0.acquire_increment">2</property>
        <property name="hibernate.c3p0.validate">true</property>

        <!-- 指定数据库的方言 -->
        <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

        <!-- 根据需要自动创建表 -->
        <property name="hbm2ddl.auto">update</property>

        <!-- 显示hibernate持久化生成的SQL -->
        <property name="show_sql">true</property>
        <!-- 将sql脚本进行格式化再输出 -->
        <property name="hibernate.formate_sql">true</property>

        <!-- 罗列所有持久化名 -->
        <mapping class="com.znker.app.domain.Student" />

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

配置文件相关说明:

  hibernate不推荐使用DriverManager来连接数据库,而是推荐使用数据源来管理数据库连接。数据源会负责位置一个数据库连接池,当程序创建数据源实例的时候,系统会一次性地创建多个数据库连接,并将这些数据库连接放置在数据库连接池中。当程序要进行数据库访问的时候,无需重新连接数据库,只要从数据库连接池中获取一个空闲的数据库连接即可,访问结束时无需关闭数据库连接,将之还给数据库连接池即可。使用这种技术可以大幅减少程序频繁获取数据库连接和关闭数据库连接,提高系统的性能。推荐使用c3p0连接池技术。

持久化类:

package com.znker.app.domain;

import javax.persistence.*;

@Entity
@Table(name="student_inf")
public class Student {
    // 学生的标识属性
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private String school;

    // 成员变量的getter和setter方法
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }

}

代码中的注解留待后续讨论

package znker;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

import com.znker.app.domain.Student;

public class StudentManager {
    public static void main(String[] args) throws Exception{
        /* 实例化Configuration
         * 不带参数的configure()方法默认加载hibernate.cfg.xml文件
         *
         * */
        Configuration conf = new Configuration().configure();

        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
                .applySettings(conf.getProperties()).buildServiceRegistry();
        // 以configuration实例创建SessionFactory实例
        SessionFactory sf = conf.buildSessionFactory(serviceRegistry);

        // 创建session
        Session session = sf.openSession();
        // 开始事务
        Transaction tx = session.beginTransaction();
        // 创建student对象
        Student stu = new Student();

        // 设置student对象的属性值
        stu.setName("刘翔");
        stu.setSchool("星河中学");

        // 保存数据
        session.save(stu);
        // 提交事务
        tx.commit();
        // 关闭session
        session.close();
        sf.close();
    }

}

运行程序,查看数据库,结果如下:

数据已经存入数据库表中。

时间: 01-20

Hibernate笔记(一):入门的相关文章

Hibernate笔记①--myeclipse制动配置hibernate

Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任. Hibernate笔记①--myeclipse制动配置hibernate

学习hibernate笔记

以前学习java的时候,一开始就学习了hibernate,那时候总觉得ssh非常高大上,所以就急忙看了下相关视频.不过因为实际需要不高,所以后来一直没有使用上hibernate组件.现在一年过去了,也疯狂学习了java一段时间了,做过几个不大的项目,但是总算对java有些了解.现在参加了工作,公司使用的就是ssh,所以这两天又重新开始捣鼓hibernate.这次学习直接使用editplus,直接开发.看了官网的demo,发现英语也没有想象中那么困难.哈哈,把自己的学习记录下来吧.这里主要记录三个

现代C++学习笔记之一入门篇:智能指针(C++ 11)

原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保程序不存在内存和资源泄漏且是异常安全的. 在现代 C++ 中,原始指针仅用于范围有限的小代码块.循环或者性能至关重要且不会混淆所有权的 Helper 函数中. 1 void UseRawPointer() 2 { 3 // Using a raw pointer -- not recommended

flask web开发笔记 -- 快速入门

flask web开发笔记 -- 快速入门 初始化 Flask应用需要创建应用实例. Web服务器通过Web Server Gateway Interface (WSGI)协议把从客户端接收到的请求传递给该对象.应用程序实例是Flask类对象,通常创建如下: from flask import Flask app = Flask(__name__) Flask类的构造函数唯一的参数是应用的主模块名或包名,用于确定应用的根目录.对于大多数应用程序,使用Python的__name__变量即可. 路由

Hibernate介绍和入门案例

一身转战三千里,一剑曾当百万师 如果你在之前没有学过SSH三大框架,那么你之前肯定是通过JDBC来对数据库进行操作.现在,你完全可以把跟数据库交互的操作直接交给Hibernate. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC

Hibernate框架之入门

1.Hibernate框架简述 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(Persistent Object,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作.除配置文件,映射文件和持久化类外,Hibernate的核心组件包

安卓笔记1——入门介绍及拨打电话和发送短信案例

现在开始接触安卓开发.以后后同步发出对应笔记.老规矩,用一张图来介绍今天的内容. 图片看不清的话可以右键新窗口打开. 一.开发工具 · Eclipse + ADT(Android Developer Tools) · Android Studio · SDK (软件开发环境, Android调试工具, 模拟等) 二.SDK目录介绍 · add-ons :(额外开发资料, google地图资源) · build-tools : 编译工具目录 · docs : 离线版开发文档 · extras : 

Hibernate简述及入门实例

一.Hibernate简述 总的概括,Hibernate是一个ORM的轻量级持久层框架,解决了对象和关系数据库中表的不匹配问题(阻抗不匹配)以及拥有开发代码不用去继承hibernate类或接口的优势(无侵入性).hibernate框架实现使得开发人员可以避免反复地编写javajdbc部分代码,应用面向对象的思维操作关系型数据库. 二.使用myeclipse创建hibernate实例两种方法(以hibernate3.5.2及mysql为例) a)手动编写hibernate.cfg.xml及*.hb

Visual Studio 2005 学习笔记一 入门

转载自:http://blog.163.com/zm_shichaoren/blog/static/6880234120087211452776/ Visual studio 2005入门记 终于卸掉了Visual C++6.0,换上了全新的Visual C++2005.尽管是简体中文版的,但是功能强大的Visual studio 2005 IDE庞大的开发环境和N多的配置设置,学习起来还不是很简单.C++/CLI通过对ISO C++ 标准的纯粹扩展和新语法,不像传统的MS-DOS 控制台程序,