1. 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)
是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。
其中HIBERNATE的轻量级 ORM 模型逐步确立了在 JAVA ORM 架构中领导地位,甚至取代复杂而又繁琐的 EJB 模型而成为事实上的 JAVA ORM 工业标准。而且其中的许多设计均被 J2EE 标准组织吸纳而成为最新 EJB 3.0 规范的标准,这也是开源项目影响工业领域标准的有力见证。
2.Hibernate是一个开放源代码的对象关系映射框架
它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
语言特点
●
将对数据库的操作转换为对Java对象的操作,从而简化开发。通过修改一个“持久化”对象的属性从而修改数据库表
中对应的记录数据。
●
提供线程和进程两个级别的缓存提升应用程序性能。
●
有丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系。
●
屏蔽不同数据库实现之间的差异。在Hibernate中只需要通过“方言”的形式指定当前使用的数据库,就可以根据底
层数据库的实际情况生成适合的SQL语句。
●
非侵入式:Hibernate不要求持久化类实现任何接口或继承任何类,POJO即可。
核心APIHibernate的API一共有6个,
分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。
通过这些接口,可以对持久化对象进行存取、事务控 制。
Hibernate的创建步骤
第一步:java project项目
再导包,即hibernate4和mysql
Bulid Path
第一步:
第二步:
2.创建 hibernate.cfg.xml
/p>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hib_demo01 //hib_demo01 SQLyog数据库名
root
123456
org.hibernate.dialect.MySQL5Dialect //连接的数据库类型
true
update
//mapping映射Product类(class注解时"/"用".")
3.创建包和类, 连接model层的Product.hbm.xml
/p>
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
//把Product类映射成t_product表
//column代表数据库的字段
//1.native跨数据库时使用,由底层方言产生;2.hibernate默认查找oracle中的hibernate_sequence,如果oracle
//中没有hibernate_sequence该序列,连oracle会报错
4.再连接util层
HibernateUtil.java
package com.oracle.util;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
public class HibernateUtil{
private static final SessionFactory sessionFactory=buildSessionFactory();
private static SessionFactory buildSessionFactory(){
Configuration configuration=new Configuration().configure(); //实例化配置文件ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilde().applySettings(configuration.getProperties()).build();
//实例化服务登记
return configuration.buildSessionFactory(serviceRegistry); //获取Session工厂
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
}
5.转向service中的 Demo.java 生成表并往表中添加数据,并对其进行增删改查
Demo.java
package com.oracle.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import com.oracle.model.Product;
public class Demo {
public static void main(String[] args) {
Configuration configuration=new Configuration().configure(); //实例化配置文件
ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); //实例化服务登记
SessionFactory sessionFactory=configuration.buildSessionFactory(serviceRegistry); //获取Session工厂
Session session=sessionFactory.openSession(); //生成一个session
session.beginTransaction(); //开启事务
//先运行程序,生产数据库表
Product product=new Product();
product.setName("键鼠套装");
product.setPrice(56.98);
product.setNum(20);
session.save(product); //观察控制台的输出
session.getTransaction().commit(); //提交事务
session.close(); //关闭session
sessionFactory.close(); //关闭session工厂
}
}
Add.java
package com.oracle.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.oracle.model.Product;
import com.oracle.util.HibernateUtil;
public class AddDemo {
private static SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
public static void main(String[] args) {
Session session=sessionFactory.openSession(); //生成一个session
session.beginTransaction(); //开启事务
Product product=new Product();
product.setName("键鼠套装2");
product.setPrice(56.00);
product.setNum(20);
session.save(product); //观察控制台的输出
session.getTransaction().commit(); //提交事务
session.close(); //关闭session
sessionFactory.close();
}
}
FindDemo.java
package com.oracle.service;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.oracle.model.Product;
import com.oracle.util.HibernateUtil;
public class FindDemo {
private static SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
public static void main(String[] args) {
Session session=sessionFactory.openSession(); //生成一个session
session.beginTransaction(); //开启事务
String hql = "from Product";
Query query = session.createQuery(hql);
@SuppressWarnings("unchecked") //压制警告
List productList = query.list();
for(Product product: productList){
System.out.println(product.getId()+" "+product.getName()+" "+product.getPrice()+" "+product.getNum());
}
session.getTransaction().commit(); //提交事务
session.close(); //关闭session
sessionFactory.close();
}
}
DelDemo.java
package com.oracle.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.oracle.model.Product;
import com.oracle.util.HibernateUtil;
public class DelDemo {
private static SessionFactory sessionFactory=HibernateUtil.getSessionFactory();public static void main(String[] args) {
Session session=sessionFactory.openSession(); //生成一个session
session.beginTransaction(); //开启事务
Product product=(Product)session.get(Product.class, Integer.valueOf(1));
session.delete(product); //删除
session.getTransaction().commit(); //提交事务
session.close(); //关闭session
sessionFactory.close();
}
}
ModifyDemo.java
package com.oracle.service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.oracle.model.Product;
import com.oracle.util.HibernateUtil;
public class ModifyDemo {
private static SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
public static void main(String[] args) {
Session session=sessionFactory.openSession(); //生成一个session
session.beginTransaction(); //开启事务
Product product=(Product)session.get(Product.class, Integer.valueOf(1));
product.setName("机械键盘");
product.setPrice(34.5);
product.setNum(109);
session.save(product);
session.getTransaction().commit(); //提交事务
session.close(); //关闭session
sessionFactory.close();
}
}