Hibernate入门经典实例
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
主要是配置连接数据库:
- <?xml version='1.0' encoding='UTF-8'?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <!-- 数据库连接信息 -->
- <property name="connection.url">
- jdbc:mysql://localhost:3306/test
- </property>
- <property name="connection.username">root</property>
- <property name="connection.password">root</property>
- <property name="connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <!-- hibernate配置 -->
- <!-- 方言配置,用于配置对哪个的SQL语句 -->
- <property name="dialect">
- org.hibernate.dialect.MySQLDialect
- </property>
- <!-- 将Sql打印到控制台,一般用于数据库调优 -->
- <property name="show_sql">true</property>
- <!-- 打印出的SQL语句以缩进的形式打印出来 -->
- <property name="format_sql">true</property>
- </session-factory>
- </hibernate-configuration>
5.建立和数据库关联的POJO类User.java
POJO类
- package com.TodayMZ.hiber.po;
- public class User {
- private Integer id;
- private String loginName;
- private String password;
- private String name;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getLoginName() {
- return loginName;
- }
- public void setLoginName(String loginName) {
- this.loginName = loginName;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
6.建立数据库和User.java关联的配置文件User.hbm.xml
配置User.java与数据库字段关联的字段
- <?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="com.TodayMZ.hiber.po.User" table="t_user">
- <id name="id" type="integer" column="t_id">
- <generator class="identity"></generator>
- </id>
- <property name="loginName" type="string" column="t_login_name">
- </property>
- <property name="password" type="string" column="t_password">
- </property>
- <property name="name" type="string" column="t_name">
- </property>
- </class>
- </hibernate-mapping>
7.在hibernate.cfg.xml中关联映射文件
(如图配置文件)
- <?xml version='1.0' encoding='UTF-8'?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <!-- 数据库连接信息 -->
- <property name="connection.url">
- jdbc:mysql://localhost:3306/test
- </property>
- <property name="connection.username">root</property>
- <property name="connection.password">root</property>
- <property name="connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <!-- hibernate配置 -->
- <!-- 方言配置,用于配置对哪个的SQL语句 -->
- <property name="dialect">
- org.hibernate.dialect.MySQLDialect
- </property>
- <!-- 将Sql打印到控制台,一般用于数据库调优 -->
- <property name="show_sql">true</property>
- <!-- 打印出的SQL语句以缩进的形式打印出来 -->
- <property name="format_sql">true</property>
- <!-- 在配置文件中关联映射文件 -->
- <mapping resource="com/TodayMZ/hiber/po/User.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
8.写测试类(TestHibernate)
测试类主要用于测试hibernate的增删查改功能!
hibernate封装了SQL语句,只需要调用hibernate的API就可以实现增删查改,比SQL语句简便
增加save方法:
- package com.TodayMZ.hiber.test;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.junit.Test;
- import com.TodayMZ.hiber.po.User;
- public class TestHibernate {
- @Test
- public void test1(){
- User user=new User();
- user.setLoginName("todayMZ");
- user.setName("today");
- user.setPassword("1234");
- Configuration conf=new Configuration();/*调用HibernateAPI,装载Hibernate配置文件*/
- conf.configure();/*装载默认配置文件,所过指定则装载conf.configure(new File("abc.xml"););*/
- SessionFactory factory=conf.buildSessionFactory();/*创建SessionFactory*/
- Session session=factory.openSession(); /*创建Session*/
- Transaction tx=session.getTransaction();/*获取事物*/
- tx.begin(); /*开启事物*/
- session.save(user);/*插入数据*/
- tx.commit(); /*提交事物*/
- session.close();/*关闭事物*/
- }
- }
更改Update方法:
- package com.TodayMZ.hiber.test;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.junit.Test;
- import com.TodayMZ.hiber.po.User;
- public class TestHibernate {
- @Test
- public void test1(){
- User user=new User();
- user.setId(1);
- user.setLoginName("todayMZ2");
- user.setName("today2");
- user.setPassword("12345");
- Configuration conf=new Configuration();
- conf.configure();
- SessionFactory factory=conf.buildSessionFactory();
- Session session=factory.openSession();
- Transaction tx=session.getTransaction();
- tx.begin();
- session.update(user);/*更改*/
- tx.commit();
- session.close();
- }
- }
查询Query方法:
- package com.TodayMZ.hiber.test;
- import java.util.List;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.junit.Test;
- import com.TodayMZ.hiber.po.User;
- public class TestHibernate {
- @Test
- public void test1(){
- Configuration conf=new Configuration();
- conf.configure();
- SessionFactory factory=conf.buildSessionFactory();
- Session session=factory.openSession();
- Transaction tx=session.getTransaction();
- tx.begin();
- //查询语句
- Query query=session.createQuery("from User");
- List<User> userList=query.list();
- for(User user :userList){
- System.out.println(user.getId()+","+user.getLoginName()+","
- +user.getName()+","+user.getPassword());
- }
- tx.commit();
- session.close();
- }
- }
删除delete方法:
- package com.TodayMZ.hiber.test;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.junit.Test;
- import com.TodayMZ.hiber.po.User;
- public class TestHibernate {
- @Test
- public void test1(){
- User user=new User();
- user.setId(1);
- Configuration conf=new Configuration();
- conf.configure();
- SessionFactory factory=conf.buildSessionFactory();
- Session session=factory.openSession();
- Transaction tx=session.getTransaction();
- tx.begin();
- session.delete(user);/*删除*/
- tx.commit();
- session.close();
- }
- }
运行:
在Testhibernate类右键选择Run As ---->JUnit Test,控制台就会打印出当前执行的SQL语句和运行结果!
that's OK!
----------------------------------------我是分割线-------------------------------------------------
文章适合初学者,都是基础知识(高手请绕道),给出了一个hibernate的执行基本结构。
给自己看,也给刚接触的人儿看!
转载请说明出处:http://blog.csdn.net/todaymz/article/details/8755401
Hibernate入门经典实例相关推荐
- python编程入门经典实例-终于明了python入门经典实例
算术最基本的操作符,是小学数学的+ - * / ,对于整数,还可以用+=,*=的操作符,对自身的值进行改变(对象引用).以下是小编为你整理的python入门经典实例 对于整数的加减乘除,但需要注意的是 ...
- python编程入门经典实例-总算明了python编程入门经典实例
跟Java语言一样,python语言也有类的概念,直接使用class关键字定义python类.在python类,定义类的方法.然后直接使用类的初始化调用自身,获取相应的属性.以下是小编为你整理的pyt ...
- python经典实例-终于明了python入门经典实例
算术最基本的操作符,是小学数学的+ - * / ,对于整数,还可以用+=,*=的操作符,对自身的值进行改变(对象引用).以下是小编为你整理的python入门经典实例 对于整数的加减乘除,但需要注意的是 ...
- android入门经典dvd,Android开发入门经典实例 - My notes
/* Android开发入门经典实例 */ My notes /* 安卓开发入门 */ 涉及到了Android开发中的一些关键知识,比如: 配置开发环境 App中一个屏幕的抽象: Activity 屏 ...
- Android开发入门经典实例
开发实例概述 今天带大家做一个简单的Android App,这个App会显示创新工程实践老师们的照片和信息,不妨先看一看效果: 虽然这个App非常简单,但是涉及到了Android开发中的一些关键知识, ...
- python编程入门经典实例-编程语言入门经典100例【Python版】
无论学习哪门计算机语言,只要把100例中绝大部分题目都做一遍,就基本掌握该语言的语法了. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #Filena ...
- python编程入门经典实例-Python入门经典实例
类和继承 class Base: def __init__(self): self.data = [] def add(self, x): self.data.append(x) def addtwi ...
- python编程入门经典实例-【python】编程语言入门经典100例--30
1 #题目:一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. 代码: 2 3 li = list(input('请输入一个5位数:')) 4 5 if (li[0 ...
- python编程入门经典实例-Python编程语言入门经典案例
[程序1] 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 1#!/usr/bin/python 2#-*- coding:utf-8 -*- 3#there is no + ...
最新文章
- 机器学习典型步骤以及训练集、验证集和测试集概念
- 软件开发环境-工具集
- HTML5 未来不可阻挡的力量
- 《POSIX多线程程序设计》读书笔记
- mysql 8.0 自定义函数_PHP+Mysql防止SQL注入的方法(life)
- DE1-LINUX运行
- 人机协作机器人发展趋势_移动机器人:人机协作是未来的发展趋势
- java怎么做系统_Java系统监控怎么做
- 【转】更改远程桌面默认端口3389及删除远程桌面连接历史记录
- linux还原系统_怎么成为一名合格的Linux运维工程师
- pb9 调用系统语音_成都电销系统一个月多少钱_选择灵狐传媒_收费透明
- 编写高质量JS代码上
- 马斯克揭晓谜底!SpaceX大火箭将送日本富豪环月七日游
- 三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较
- PSP记忆棒文件放置结构图
- 基于android终端的物联网医药物流管理系统设计公司,基于Android终端的物联网物流管理系统的设计与实现.pdf...
- 关于java基础知识的代码引用
- 06.Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
- 华为最终面试java_最全的华为面试题-java学习
- location.href和open的几种用法和区别