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__变量即可. 路由

1、数据结构笔记之一入门基本概念

1.蛤蟆的数据结构笔记之一入门基本概念 最近一段时间一句名言一直徘徊在我的耳畔,并非警示名言,而是老子中的一句平常话,"合抱之木.生于毫末;九层之台.起于累土;千里之行.始于足下;千里之堤.毁于蚁穴".这句初中便能开口套用的熟语,这么多年后还是久久不能行于实践.怪世人太急于成功,还是怪自己过于浮夸? 不管是什么,让我们再一次的从脚下走起. 从哪里走起?汇编?C?操作系统?组成原理?离散数学?形式语言?数理逻辑?还是其他?对比分析良久,最后还是选定了数据结构.因为数据结构的内容不仅是一般

springmvc学习笔记(5)-入门程序小结

springmvc学习笔记(5)-入门程序小结 springmvc学习笔记5-入门程序小结 入门程序配置小结 非注解的完整的配置文件 注解的完整配置文件 通过入门程序理解springmvc前端控制器.处理器映射器.处理器适配器.视图解析器用法.并附上入门程序的非注解的完整的配置文件,注解的完整配置文件. 入门程序配置小结 前端控制器配置: 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 第二种:/,所以访问的地址都由DispatcherServl

框架Hibernate笔记系列 基础 Session One

标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC来access DB,我们要先连接数据库,然后与数据库交互,然后关闭连接.使用了Hibernate之后,它实现了对JDBC的封装.跟数据库建立连接和关闭连接都由Hibernate来管理,我们只要写交互代码就可以了. 目前,使用mybatis的比较多.原因在于使用Hibernate效率不高.(In t

【慕课网】php工程师学习计划之我的学习笔记——01 入门必学web基础 htmlcss基础课程 篇

为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重要,非常感谢慕课网提供本套学习计划,希望更多地学习平台能提供像这样全面一条龙学习思路清晰地教程. 计划图:链接 我的学习状况:2015-07-06 10:29:46 开始随记: php工程师学习计划笔记——01 入门必学web基础 htmlcss基础课程 篇 入门篇: text-align:cent

Unity3d_学习笔记_入门

转自:http://blog.csdn.net/zlfxy/article/details/8722437 本文内容来自“编程教父”的视频课程. 1.Unity3d一个游戏引擎,可以用来开发很多游戏. 要利用Unity3d开发游戏,我们首先要下载一个Unity3d软件.下载后,下载一个破解补丁,这样就可以正常进行开发了. 2.Unity3d每次只能开启一个工程项目. (1)Unity3d中比较重要的一个对象就是摄像机了,摄像机就相当于我们人的眼睛,有了摄像机,运行程序后,才能够有视野. (2)U