博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate学习笔记
阅读量:5789 次
发布时间:2019-06-18

本文共 7650 字,大约阅读时间需要 25 分钟。

Hibernate是什么:

Hibernate 架构:

下载、安装、必要的 jar包、环境CLASSPAST的设置(此步骤省略)

Hibernate框架的使用步骤:
1、创建Hibernate的配置文件(hibernate.cfg.xml)
2、创建持久化类,即事实上例须要保存到数据库中的类(User.java)
3、创建对象-关系映射文件(User.hbm.xml)

4、通过Hibernate API编写訪问数据库的代码

配置文件 hibernate.cfg.xml:

org.hibernate.dialect.MySQLDialect
com.mysql.jdbc.Driver
jdbc:mysql://localhost/testone
root
yanfei
true

创建持久化类:

package com.jiangge.hblearn;/** * @author jiangge *  */public class Employee{	private int id;	private String firstName;	private String lastName;	private int salary;		public Employee()	{	}	public Employee(String firstName, String lastName, int salary)	{		super();		this.firstName = firstName;		this.lastName = lastName;		this.salary = salary;	}	public int getId()	{		return id;	}	public void setId(int id)	{		this.id = id;	}	public String getFirstName()	{		return firstName;	}	public void setFirstName(String firstName)	{		this.firstName = firstName;	}	public String getLastName()	{		return lastName;	}	public void setLastName(String lastName)	{		this.lastName = lastName;	}	public int getSalary()	{		return salary;	}	public void setSalary(int salary)	{		this.salary = salary;	}}

创建数据库中的表:

create table EMPLOYEE (   id INT NOT NULL auto_increment,   first_name VARCHAR(20) default NULL,   last_name  VARCHAR(20) default NULL,   salary     INT  default NULL,   PRIMARY KEY (id));

配置文件--映射文件Employee.hbm.xml:

This class contains the employee detail.
创建測试文件--CURD操作:

package com.jiangge.hblearn;import java.util.List;import java.util.Iterator;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/** * hibernate CRUD操作 * @author jiangge */public class ManageEmployee{	private static SessionFactory factory;	public static void main(String[] args)	{		try		{			factory = new Configuration().configure().buildSessionFactory();		} 		catch (Throwable ex)		{			System.err.println("Failed to create sessionFactory object." + ex);			throw new ExceptionInInitializerError(ex);		}		ManageEmployee ME = new ManageEmployee();		/* Add few employee records in database */		Integer empID1 = ME.addEmployee("Zara", "Ali", 1000);		Integer empID2 = ME.addEmployee("Daisy", "Das", 5000);		Integer empID3 = ME.addEmployee("John", "Paul", 10000);		/* List down all the employees */		ME.listEmployees();		/* Update employee's records */		ME.updateEmployee(empID1, 5000);		/* Delete an employee from the database */		ME.deleteEmployee(empID2);		/* List down new list of the employees */		ME.listEmployees();	}	/* Method to CREATE an employee in the database */	public Integer addEmployee(String fname, String lname, int salary)	{		Session session = factory.openSession();		Transaction tx = null;		Integer employeeID = null;		try		{			tx = session.beginTransaction();			Employee employee = new Employee(fname, lname, salary);			employeeID = (Integer) session.save(employee);			tx.commit();		} 		catch (HibernateException e)		{			if (tx != null)				tx.rollback();			e.printStackTrace();		} 		finally		{			session.close();		}		return employeeID;	}	/* Method to READ all the employees */	public void listEmployees()	{		Session session = factory.openSession();		Transaction tx = null;		try		{			tx = session.beginTransaction();			List employees = session.createQuery("FROM Employee").list();			for (Iterator iterator = employees.iterator(); iterator.hasNext();)			{				Employee employee = (Employee) iterator.next();				System.out.print("First Name: " + employee.getFirstName());				System.out.print("  Last Name: " + employee.getLastName());				System.out.println("  Salary: " + employee.getSalary());			}			tx.commit();		} 		catch (HibernateException e)		{			if (tx != null)				tx.rollback();			e.printStackTrace();		} 		finally		{			session.close();		}	}	/* Method to UPDATE salary for an employee */	public void updateEmployee(Integer EmployeeID, int salary)	{		Session session = factory.openSession();		Transaction tx = null;		try		{			tx = session.beginTransaction();			Employee employee = (Employee) session.get(Employee.class, EmployeeID);			employee.setSalary(salary);			session.update(employee);			tx.commit();		}		catch (HibernateException e)		{			if (tx != null)				tx.rollback();			e.printStackTrace();		} 		finally		{			session.close();		}	}	/* Method to DELETE an employee from the records */	public void deleteEmployee(Integer EmployeeID)	{		Session session = factory.openSession();		Transaction tx = null;		try		{			tx = session.beginTransaction();			Employee employee = (Employee) session.get(Employee.class, EmployeeID);			session.delete(employee);			tx.commit();		}		catch (HibernateException e)		{			if (tx != null)				tx.rollback();			e.printStackTrace();		} 		finally		{			session.close();		}	}}

执行结果,IDE的Console输出:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).log4j:WARN Please initialize the log4j system properly.Hibernate: insert into EMPLOYEE (first_name, last_name, salary) values (?, ?, ?)Hibernate: insert into EMPLOYEE (first_name, last_name, salary) values (?, ?, ?)Hibernate: insert into EMPLOYEE (first_name, last_name, salary) values (?, ?, ?)Hibernate: select employee0_.id as id0_, employee0_.first_name as first2_0_, employee0_.last_name as last3_0_, employee0_.salary as salary0_ from EMPLOYEE employee0_First Name: Zara  Last Name: Ali  Salary: 1000First Name: Daisy  Last Name: Das  Salary: 5000First Name: John  Last Name: Paul  Salary: 10000Hibernate: select employee0_.id as id0_0_, employee0_.first_name as first2_0_0_, employee0_.last_name as last3_0_0_, employee0_.salary as salary0_0_ from EMPLOYEE employee0_ where employee0_.id=?Hibernate: update EMPLOYEE set first_name=?, last_name=?, salary=? where id=?Hibernate: select employee0_.id as id0_0_, employee0_.first_name as first2_0_0_, employee0_.last_name as last3_0_0_, employee0_.salary as salary0_0_ from EMPLOYEE employee0_ where employee0_.id=?Hibernate: delete from EMPLOYEE where id=?Hibernate: select employee0_.id as id0_, employee0_.first_name as first2_0_, employee0_.last_name as last3_0_, employee0_.salary as salary0_ from EMPLOYEE employee0_First Name: Zara  Last Name: Ali  Salary: 5000First Name: John  Last Name: Paul  Salary: 10000

MySQL数据库数据:

mysql> select * from EMPLOYEE;+----+------------+-----------+--------+| id | first_name | last_name | salary |+----+------------+-----------+--------+|  1 | Zara       | Ali       |   5000 ||  3 | John       | Paul      |  10000 |+----+------------+-----------+--------+2 rows in set
參考文献:

1、英文:   

2、中文: 入门系列文章

==================我是没用得分隔线====================================================

Hibernate框架的使用步骤:
1、创建Hibernate的配置文件(hibernate.cfg.xml)
2、创建持久化类,即事实上例须要保存到数据库中的类(User.java)
3、创建对象-关系映射文件(User.hbm.xml)

4、通过Hibernate API编写訪问数据库的代码


Hibernate配置文件
    
    Hibernate配置文件从形式来讲有两种基本的格式:
  • 一种是Java属性文件,即*.properties,这样的配置格式主要定义连接数据库须要的參数
  • 另一种是XML格式的文件,这样的文档除了能够定义连接数据库须要的參数还能够定义程序中用的映射文件。所以普通情况下使用XML格式的配置文档。

映射的概念
   
 映射即对象关系映射(O
bject Relational Mapping)
ORM的实现目的就是将对象数据保存到数据库中,同一时候能够将数据库数据读入对象中,    这样开发者就能够将对数据库数据的操作转化为对这些对象的操作。
注解配置基本映射实例 :
    除了XML方式(User.hbm.xml)配置映射外,还能够通过给类文件加入�注解的方式配置映射,比如:
          @Entiey
          @Table(name="user")
   很多其它内容请英文keyword搜索「hibernate annotations tutorial」

关系映射分类

       关系映射即在基本映射的基础上处理多个相关对象和多个相关表之间联系的映射。关系映射从相应关系的角度能够分为例如以下七种类型:
一对一单向关联
一对一双向关联
一对多单向关联
多对一单向关联
一对多双向关联
多对多单向关联

多对多双向关联

你可能感兴趣的文章
spring 之AOP
查看>>
总结 15/4/23
查看>>
守护进程
查看>>
JavaScript概述
查看>>
linux crontab 实现每秒执行
查看>>
python之元组
查看>>
Windows 7环境下网站性能测试小工具 Apache Bench 和 Webbench使用和下载
查看>>
C#常见错误解决方法
查看>>
安装cnpm (npm淘宝镜像)
查看>>
js 利用事件委托解决mousedown中的click
查看>>
游戏设计艺术 第2版 (Jesse Schell 著)
查看>>
Java 面向对象(基础) 知识点总结I
查看>>
miniUI mini-monthpicker ie8兼容性问题
查看>>
C++11 double转化为string
查看>>
相机中白平衡的算法模拟实现
查看>>
ASP 中调用函数关于Call使用注意的问题
查看>>
python教程(六)·字符串
查看>>
JPA的主键生成策略
查看>>
用 Markdown 写作(一)——添加文章页内导航
查看>>
Aizu 0525 Osenbei(状压+贪心)
查看>>