Hibernate开发步骤
1.新创建工程并且导入相关的包

主要是hibernate、mysql相关的JAR包。

注意:新导入的hibernate相关的JAR包是否与你当前所使用的jdk版本是否兼容,且不要忘记导入数据库的驱动JAR包。如5.2的hibernate需要jdk1.8才能编译。


2.持久化类POJO的设计-------javabean与数据库表相关联的类。

public class UserInfo {
private int id;
private String name;
private String password;
private String role;
public UserInfo() { }
public UserInfo(String name, String password, String role) {
super();
this.name = name;
this.password = password;
this.role = role;
}
public UserInfo(int id, String name, String password, String role) {
super();
this.id = id;
this.name = name;
this.password = password;
this.role = role;
}
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public String toString() {
return "UserInfo [id=" + id + ", name=" + name + ", password="
+ password + ", role=" + role + "]";
} }

3.编写*.hbm.xml映射文件-----主要是描述实体类与数据库中表之间的映射关系。

<?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>
<class name="net.togogo.pojo.UserInfo" table="t_user"><!-- 指定数据库中的表名 -->
<id name="id" type="java.lang.Integer">
<column name="id" />
<!-- 主键值生成方式 -->
<generator class="increment" />
</id>
<property name="name" type="java.lang.String"><!-- property对应与POJO中的属性 -->
<column name="name" length="20" /> <!-- column对应与数据库中表的属性 -->
</property>
<property name="password" type="java.lang.String">
<column name="password" length="20" />
</property>
<property name="role" type="java.lang.String">
<column name="role" length="20" />
</property>
</class>
</hibernate-mapping>

4.编写hibernate配置文件-------数据库的连接信息和显示底层sql语句。

<!--
~ Hibernate, Relational Persistence for Idiomatic Java
~
~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory>
<!-- 数据库连接方言信息 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property> <!-- 你所使用的数据库驱动为:mysql -->
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property> <!-- 你所使用的数据库名字为:hibernate_db -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/hibernate_db
</property> <!-- 你所使用的数据库账号为:root -->
<property name="connection.username">root</property> <!-- 你所使用的数据库密码为:root -->
<property name="connection.password">root</property> <!-- 显示底层的sql语句,开发阶段设为true,项目发布阶段设为false -->
<property name="show_sql">true</property>
<mapping resource="net/togogo/pojo/userinfo.hbm.xml"/>
</session-factory>
</hibernate-configuration>

5.使用hibernate api操作数据库.其中又包括如下几步。
        1)获取 Configuration 对象。
        2)获取 SessionFactory 对象。
        3)获取 Session,打开事务。
        4)用面向对象的方式操作数据库。
        5)关闭事务,关闭 Session。

public class HibernateUtils {
  //往数据库中插入数据信息。
public static void save(Object obj){
        1)获取 Configuration 对象。
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
        2)获取 SessionFactory 对象。
SessionFactory sessionFactory = config.buildSessionFactory();
         3)获取 Session
Session session = sessionFactory.openSession();
         3)打开事务。
Transaction tx = session.beginTransaction();
        4)用面向对象的方式操作数据库。
session.save(obj);
         5)关闭事务,关闭 Session。
tx.commit();
session.close();
} public static void deleteById(int id){
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
UserInfo userInfo = session.get(UserInfo.class, id);
session.delete(userInfo);
tx.commit();
session.close();
} public static void update(Object obj){
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.update(obj);
tx.commit();
session.close();
} public static Object findObjById(Class c,Serializable id){
Configuration config = new Configuration();
config.configure("hibernate.cfg.xml");
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Object obj = session.get(c, id);
session.close();
return obj;
}
}

6.测试类

public class IDUQTest {

    @Test
public void testSave(){
UserInfo userInfo = new UserInfo("lili","123","admin");
HibernateUtils.save(userInfo);
} @Test
public void testDelete(){
HibernateUtils.deleteById(4);
} @Test
public void testUpdate(){
UserInfo userInfo = (UserInfo) HibernateUtils.findObjById(UserInfo.class, 3);
userInfo.setPassword("123456");
HibernateUtils.update(userInfo);
}
}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hibernate的运行过程

Hibernate的运行过程如下:

1) 应用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,并用这些信息生成一个SessionFactory对象

2) 从SessionFactory对象生成一个Session对象

3) 用Session对象生成Transaction对象

4) 可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对POJO类进行加载、保存、更新、删除、等操作;

5) 在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将提交这些操作到数据库中。

//end

hibernate初步的更多相关文章

  1. hibernate初步4

    JPA 1.JPA概述 JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据.,而Hi ...

  2. hibernate初步3

    事务和并发 1.事务概念 一组不可分割的操作,事务有如下属性(ACID 属性:Atomic Consistent Isolated Durable)(1)原子性---Atomic  事务的原子性指的是 ...

  3. hibernate初步2

    Hibernate级联设计 数据库表之间的关系(主要关系有一对多.一对一.多对多)主要是从如下三个方面体现出来: 1.表体设计 2.实体类的设计 3.配置文件 以下是一些重要级联设计参数属性介绍: c ...

  4. Hibernate知识总结(一)

    一.ORM ORM的全称是Object/Relation Mapping,即对象/关系映射,可以将其理解成一种规范,它概述了这类框架的基本特征:完成面向对象的编程语言到关系数据库的映射.可以把ORM看 ...

  5. Hibernate(1)基本知识

    hibernate初步 1.概述 ①hibernate是java应用和关系数据库之间的桥梁,是一个开源的对象关系映射框架,可用来把对象模型表示的java对象 映射到关系型数据库表中去. ②hibern ...

  6. Hibernate二次学习一----------搭建Hibernate

    目录 1. 项目结构 1.2 hibernate.cfg.xml 1.3 entity 1.4 entity.hbm.xml 2. 测试 3. 总结 © 版权声明:本文为博主原创文章,转载请注明出处 ...

  7. 如何自学 Java 开发

    如何自学 Java 开发? 568赞同反对,不会显示你的姓名 李艾米IT路上学习 568 人赞同 Java Web前端技术 HTML 入门视频课程 1 HTML 简介 2 HTML基本结构[ 3 HT ...

  8. Hibernate的初步

    1.简介 在java开发领域,基于数据库应用的设计与实现一直都是面向关系的,Hibernate对象/关系映射ORM框架的出现为java面向对象开发提供了易于使用的数据持久化解决方案. ORM介绍: ( ...

  9. Hibernate学习2—Hibernate4 CRUD体验初步

    接着上一节,工程结构: jar包没有变化: 一.HibernateUtil 封装: com.cy.util.HibernateUtil.java: package com.cy.util; impor ...

随机推荐

  1. win32绘图基础

     获取设备环境句柄: (1)WM_PAINT消息中: PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd,&ps); EndPaint(hwnd,&ps ...

  2. suse 下的gcc安装

    在付出了一天的努力之后终于在win7系统上面硬盘安装suse操作系统成功,可是随之而来的问题居然是没有安装GCC,这对我来说是一个不小的打击,因为很多工作和工具安装需要通过GCC来编译,因此我只好求助 ...

  3. 关于 WebView 的一些笔记

    什么是 WebView WebView 是手机中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装的一个组件.没有提供地址栏和导航栏, WebView 只是单纯的展示一个网页界面.在开发中 ...

  4. JS——html基本结构

    document.title——文档标题 document.head——文档头标签 document.body——文档的主体 document.documentElement 表示整个文档的html标 ...

  5. [文章转载]-Java后端,应该日常翻看的中文技术网站 -江南白衣

    Java后端,应该日常翻看的中文技术网站 1.内容生产者 InfoQ 中文技术第一站,佩服霍老板,真金白银地为中国程序员们生产内容. ImportNew 专门面向Java的内容生产者兼聚合者,偶然也有 ...

  6. UICollectionView(一)基本概念

    整体预览 高等级的包含和管理(Top-level containment and management) UICollectionView UICollectionViewController UIC ...

  7. 把excel、txt当数据库来查询

    Sub excel连接数据库() Dim Con As New ADODB.Connection Dim strCon, strsql As String Dim rs As ADODB.Record ...

  8. mybatis 简单的入门实例

    第一步:添加mybaties的架包 第二步:配置mybaties的文件 <?xml version="1.0" encoding="UTF-8" ?> ...

  9. redis键的过期和内存淘汰策略

    键的过期时间 设置过期时间 Redis可以为存储在数据库中的值设置过期时间,作为一个缓存数据库,这个特性是很有帮助的.我们项目中的token或其他登录信息,尤其是短信验证码都是有时间限制的. 按照传统 ...

  10. 我的FPGA

    转眼间我都工作三个年头了,这两年多时间我一直从事着FPGA测试工作,从一开始的懵懂无知,到现在的些许理解,我想记录和分享我对FPGA测试的理解. 之所以选择在博客园写这样,是我发现在这里阅览文章不需要 ...