http://blog.csdn.net/yidamr/article/details/8755401

hibernate是开源的,用于封装数据访问层的组件,称为:数据访问层框架(持久层框架)

写一个入门案例,体现hibernate的工作方式!明白hibernate作用及其程序结构!

例子:用Hibernate实现增删查改案例


环境:

IDE工具:Myeclipse ,mysql

所需jar包:

hibernate的jar:

mysql所需jar(程序用到mysql数据库):

mysql-connector-java-5.1.6-bin.jar

步骤:

1.创建一个web项目

2.导入jar包

3.建数据库和表文件

4.建hibernate和数据库的关联配置文件hibernate.cfg.xml

5.建立和数据库关联的POJO类User.java

6.建立数据库和User.java关联的配置文件User.hbm.xml

7.在hibernate.cfg.xml中关联映射文件

8.写测试类(TestHibernate)

项目最后截图:

开始:

1.创建一个项目

还是截图,创建的项目名称为HibernateSpExa

2.导入所需jar包

导入所需jar包到项目的lib文件夹下(或者通过Build Path导入也可,这里需要hibernate和Mysql的jar包)

3.建数据库和表文件

在WebRoot下面建立db.sql文件,在里面建立下图所示内容,并关联Mysql运行建立数据库和表

4.建hibernate和数据库的关联配置文件hibernate.cfg.xml

主要是配置连接数据库:

[html] view plaincopyprint?
  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!-- 数据库连接信息 -->
  8. <property name="connection.url">
  9. jdbc:mysql://localhost:3306/test
  10. </property>
  11. <property name="connection.username">root</property>
  12. <property name="connection.password">root</property>
  13. <property name="connection.driver_class">
  14. com.mysql.jdbc.Driver
  15. </property>
  16. <!-- hibernate配置 -->
  17. <!-- 方言配置,用于配置对哪个的SQL语句 -->
  18. <property name="dialect">
  19. org.hibernate.dialect.MySQLDialect
  20. </property>
  21. <!-- 将Sql打印到控制台,一般用于数据库调优 -->
  22. <property name="show_sql">true</property>
  23. <!-- 打印出的SQL语句以缩进的形式打印出来 -->
  24. <property name="format_sql">true</property>
  25. </session-factory>
  26. </hibernate-configuration>

5.建立和数据库关联的POJO类User.java

POJO类

[java] view plaincopyprint?
  1. package com.TodayMZ.hiber.po;
  2. public class User {
  3. private Integer id;
  4. private String loginName;
  5. private String password;
  6. private String name;
  7. public Integer getId() {
  8. return id;
  9. }
  10. public void setId(Integer id) {
  11. this.id = id;
  12. }
  13. public String getLoginName() {
  14. return loginName;
  15. }
  16. public void setLoginName(String loginName) {
  17. this.loginName = loginName;
  18. }
  19. public String getPassword() {
  20. return password;
  21. }
  22. public void setPassword(String password) {
  23. this.password = password;
  24. }
  25. public String getName() {
  26. return name;
  27. }
  28. public void setName(String name) {
  29. this.name = name;
  30. }
  31. }

6.建立数据库和User.java关联的配置文件User.hbm.xml

配置User.java与数据库字段关联的字段

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  4. <hibernate-mapping>
  5. <class name="com.TodayMZ.hiber.po.User" table="t_user">
  6. <id name="id" type="integer" column="t_id">
  7. <generator class="identity"></generator>
  8. </id>
  9. <property name="loginName" type="string" column="t_login_name">
  10. </property>
  11. <property name="password" type="string" column="t_password">
  12. </property>
  13. <property name="name" type="string" column="t_name">
  14. </property>
  15. </class>
  16. </hibernate-mapping>

7.在hibernate.cfg.xml中关联映射文件

(如图配置文件)

[html] view plaincopyprint?
  1. <?xml version='1.0' encoding='UTF-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!-- 数据库连接信息 -->
  8. <property name="connection.url">
  9. jdbc:mysql://localhost:3306/test
  10. </property>
  11. <property name="connection.username">root</property>
  12. <property name="connection.password">root</property>
  13. <property name="connection.driver_class">
  14. com.mysql.jdbc.Driver
  15. </property>
  16. <!-- hibernate配置 -->
  17. <!-- 方言配置,用于配置对哪个的SQL语句 -->
  18. <property name="dialect">
  19. org.hibernate.dialect.MySQLDialect
  20. </property>
  21. <!-- 将Sql打印到控制台,一般用于数据库调优 -->
  22. <property name="show_sql">true</property>
  23. <!-- 打印出的SQL语句以缩进的形式打印出来 -->
  24. <property name="format_sql">true</property>
  25. <!-- 在配置文件中关联映射文件 -->
  26. <mapping resource="com/TodayMZ/hiber/po/User.hbm.xml" />
  27. </session-factory>
  28. </hibernate-configuration>

8.写测试类(TestHibernate)

测试类主要用于测试hibernate的增删查改功能!

hibernate封装了SQL语句,只需要调用hibernate的API就可以实现增删查改,比SQL语句简便

增加save方法:

[java] view plaincopyprint?
  1. package com.TodayMZ.hiber.test;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.Transaction;
  5. import org.hibernate.cfg.Configuration;
  6. import org.junit.Test;
  7. import com.TodayMZ.hiber.po.User;
  8. public class TestHibernate {
  9. @Test
  10. public void test1(){
  11. User user=new User();
  12. user.setLoginName("todayMZ");
  13. user.setName("today");
  14. user.setPassword("1234");
  15. Configuration conf=new Configuration();/*调用HibernateAPI,装载Hibernate配置文件*/
  16. conf.configure();/*装载默认配置文件,所过指定则装载conf.configure(new File("abc.xml"););*/
  17. SessionFactory factory=conf.buildSessionFactory();/*创建SessionFactory*/
  18. Session session=factory.openSession(); /*创建Session*/
  19. Transaction  tx=session.getTransaction();/*获取事物*/
  20. tx.begin(); /*开启事物*/
  21. session.save(user);/*插入数据*/
  22. tx.commit(); /*提交事物*/
  23. session.close();/*关闭事物*/
  24. }
  25. }

更改Update方法:

[java] view plaincopyprint?
  1. package com.TodayMZ.hiber.test;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.Transaction;
  5. import org.hibernate.cfg.Configuration;
  6. import org.junit.Test;
  7. import com.TodayMZ.hiber.po.User;
  8. public class TestHibernate {
  9. @Test
  10. public void test1(){
  11. User user=new User();
  12. user.setId(1);
  13. user.setLoginName("todayMZ2");
  14. user.setName("today2");
  15. user.setPassword("12345");
  16. Configuration conf=new Configuration();
  17. conf.configure();
  18. SessionFactory factory=conf.buildSessionFactory();
  19. Session session=factory.openSession();
  20. Transaction  tx=session.getTransaction();
  21. tx.begin();
  22. session.update(user);/*更改*/
  23. tx.commit();
  24. session.close();
  25. }
  26. }

查询Query方法:

[java] view plaincopyprint?
  1. package com.TodayMZ.hiber.test;
  2. import java.util.List;
  3. import org.hibernate.Query;
  4. import org.hibernate.Session;
  5. import org.hibernate.SessionFactory;
  6. import org.hibernate.Transaction;
  7. import org.hibernate.cfg.Configuration;
  8. import org.junit.Test;
  9. import com.TodayMZ.hiber.po.User;
  10. public class TestHibernate {
  11. @Test
  12. public void test1(){
  13. Configuration conf=new Configuration();
  14. conf.configure();
  15. SessionFactory factory=conf.buildSessionFactory();
  16. Session session=factory.openSession();
  17. Transaction  tx=session.getTransaction();
  18. tx.begin();
  19. //查询语句
  20. Query query=session.createQuery("from User");
  21. List<User> userList=query.list();
  22. for(User user :userList){
  23. System.out.println(user.getId()+","+user.getLoginName()+","
  24. +user.getName()+","+user.getPassword());
  25. }
  26. tx.commit();
  27. session.close();
  28. }
  29. }

删除delete方法:

[java] view plaincopyprint?
  1. package com.TodayMZ.hiber.test;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.Transaction;
  5. import org.hibernate.cfg.Configuration;
  6. import org.junit.Test;
  7. import com.TodayMZ.hiber.po.User;
  8. public class TestHibernate {
  9. @Test
  10. public void test1(){
  11. User user=new User();
  12. user.setId(1);
  13. Configuration conf=new Configuration();
  14. conf.configure();
  15. SessionFactory factory=conf.buildSessionFactory();
  16. Session session=factory.openSession();
  17. Transaction  tx=session.getTransaction();
  18. tx.begin();
  19. session.delete(user);/*删除*/
  20. tx.commit();
  21. session.close();
  22. }
  23. }

运行:

在Testhibernate类右键选择Run As ---->JUnit Test,控制台就会打印出当前执行的SQL语句和运行结果!

that's OK!

----------------------------------------我是分割线-------------------------------------------------

文章适合初学者,都是基础知识(高手请绕道),给出了一个hibernate的执行基本结构。

给自己看,也给刚接触的人儿看!

转载请说明出处:http://blog.csdn.net/todaymz/article/details/8755401

Hibernate入门经典实例相关推荐

  1. python编程入门经典实例-终于明了python入门经典实例

    算术最基本的操作符,是小学数学的+ - * / ,对于整数,还可以用+=,*=的操作符,对自身的值进行改变(对象引用).以下是小编为你整理的python入门经典实例 对于整数的加减乘除,但需要注意的是 ...

  2. python编程入门经典实例-总算明了python编程入门经典实例

    跟Java语言一样,python语言也有类的概念,直接使用class关键字定义python类.在python类,定义类的方法.然后直接使用类的初始化调用自身,获取相应的属性.以下是小编为你整理的pyt ...

  3. python经典实例-终于明了python入门经典实例

    算术最基本的操作符,是小学数学的+ - * / ,对于整数,还可以用+=,*=的操作符,对自身的值进行改变(对象引用).以下是小编为你整理的python入门经典实例 对于整数的加减乘除,但需要注意的是 ...

  4. android入门经典dvd,Android开发入门经典实例 - My notes

    /* Android开发入门经典实例 */ My notes /* 安卓开发入门 */ 涉及到了Android开发中的一些关键知识,比如: 配置开发环境 App中一个屏幕的抽象: Activity 屏 ...

  5. Android开发入门经典实例

    开发实例概述 今天带大家做一个简单的Android App,这个App会显示创新工程实践老师们的照片和信息,不妨先看一看效果: 虽然这个App非常简单,但是涉及到了Android开发中的一些关键知识, ...

  6. python编程入门经典实例-编程语言入门经典100例【Python版】

    无论学习哪门计算机语言,只要把100例中绝大部分题目都做一遍,就基本掌握该语言的语法了. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #Filena ...

  7. python编程入门经典实例-Python入门经典实例

    类和继承 class Base: def __init__(self): self.data = [] def add(self, x): self.data.append(x) def addtwi ...

  8. python编程入门经典实例-【python】编程语言入门经典100例--30

    1 #题目:一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 代码: 2 3 li = list(input('请输入一个5位数:')) 4 5 if (li[0 ...

  9. python编程入门经典实例-Python编程语言入门经典案例

    [程序1] 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 1#!/usr/bin/python 2#-*- coding:utf-8 -*- 3#there is no + ...

最新文章

  1. 机器学习典型步骤以及训练集、验证集和测试集概念
  2. 软件开发环境-工具集
  3. HTML5 未来不可阻挡的力量
  4. 《POSIX多线程程序设计》读书笔记
  5. mysql 8.0 自定义函数_PHP+Mysql防止SQL注入的方法(life)
  6. DE1-LINUX运行
  7. 人机协作机器人发展趋势_移动机器人:人机协作是未来的发展趋势
  8. java怎么做系统_Java系统监控怎么做
  9. 【转】更改远程桌面默认端口3389及删除远程桌面连接历史记录
  10. linux还原系统_怎么成为一名合格的Linux运维工程师
  11. pb9 调用系统语音_成都电销系统一个月多少钱_选择灵狐传媒_收费透明
  12. 编写高质量JS代码上
  13. 马斯克揭晓谜底!SpaceX大火箭将送日本富豪环月七日游
  14. 三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较
  15. PSP记忆棒文件放置结构图
  16. 基于android终端的物联网医药物流管理系统设计公司,基于Android终端的物联网物流管理系统的设计与实现.pdf...
  17. 关于java基础知识的代码引用
  18. 06.Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
  19. 华为最终面试java_最全的华为面试题-java学习
  20. location.href和open的几种用法和区别

热门文章

  1. mapbox layers
  2. 【Ibatis】(六)、动态SQL查询
  3. windows 8 应用商店揭秘(推荐)
  4. Linux操作系统(第二版)(RHEL 8/CentOS 8)
  5. nuxtjs pc网站跳转到h5
  6. word文档在关闭前未保存,如何找回?
  7. 使用Axure制作低保真智慧教育App
  8. emq的客户端与服务端_使用 EMQ X Cloud 物联网 MQTT 云服务
  9. 利用opencv画圆
  10. CSL 的拼图 枚举更新