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. Quartz中时间参数说明 即Cron表达式

    Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 表1 Cron表达式时间字段 位置 时间域名 允许值 允 ...

  2. 图解TCP/IP笔记(1)——TCP/IP协议群

    转载请注明:https://www.cnblogs.com/igoslly/p/9167916.html TCP/IP制定  制定:IETF 记录:RFC - Request for comment ...

  3. Android开发高手课 - 02 崩溃优化(下):应用崩溃了,你应该如何去分析?

    崩溃现场 1. 崩溃信息 进程名.线程名 崩溃类型和堆栈信息 2. 系统信息 Logcat 机型.系统.厂商.CPU.ABI.Linux 版本等 设备状态:是否 root.是否模拟器.是否有 Xpos ...

  4. CSS——font

    行高的量取方式: 1.第一行可设置margin-top值.然后将第一文字顶部到第二行文字顶部的值作为行高的值(要注意对齐方式) 2.将 3.电视上 font:12px/1.5//字体12px,行高1. ...

  5. CNN结构:Windows使用FasterRCNN-C++版本

    参考文章:Windows下VS2013 C++编译测试faster-rcnn. 本文与作者的所写方法有些许不同,欲速则不达,没有按照作者的推荐方法,绕了个弯弯. Windows版本纯C++版本的Fas ...

  6. Windows Server 2008无法远程连接

    Server 2008 R2依次配置好之后,重启发现总是远程桌面时而连接不上.具体现象如下: 偶尔可以通过桌面远程连接连接到Server.以为是防火墙的问题,各种设置——甚至关闭,依然无法连接.反复重 ...

  7. Cookie的实现

    Cookie是web server下发给浏览器的任意的一段文本,在后续的http 请求中,浏览器会将cookie带回给Web Server.同时在浏览器允许脚本执行的情况下,Cookie是可以被Jav ...

  8. Java 之jdbc连接mysql数据库

    package jdbc; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; ...

  9. 不抛异常的swap函数

    namespace AStuff{ template<typename T> class A { public: void swap(A *other) { using std::swap ...

  10. 7-11 社交网络图中结点的“重要性”计算 (30 分)(Dijkstra算法)

    题意:  思路:对每个输入的点跑一遍dijkstra算法,然后对这个点到所有点的距离求和按公式输出就可以了. (这次尝试了用数组模拟链表来做最短路问题,刷新了自己对最短路的理解) 这里构造链表的过程我 ...