java的hibernate创建步骤
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即可。
核心API
Hibernate的API一共有6个,
分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。
通过这些接口,可以对持久化对象进行存取、事务控 制。
Hibernate的创建步骤
第一步:java project项目
再导包,即hibernate4和mysql
Bulid Path
第一步:
第二步:
2.创建 hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!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="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hib_demo01</property> //hib_demo01 SQLyog数据库名
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!-- 方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> //连接的数据库类型
<!-- 控制台显示SQL -->
<property name="show_sql">true</property>
<!-- 自动更新表结构 -->
<property name="hbm2ddl.auto">update</property>
<mapping resource="com/oracle/model/Product.hbm.xml"/> // mapping映射Product类(class注解时"/"用".")
</session-factory>
</hibernate-configuration>
3.创建包和类, 连接model层的Product.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.oracle.model">
<class name="Product" table="t_product"> //把Product类映射成t_product表
<id name="id" column="product_id"> //column代表数据库的字段
<generator class="native"></generator>
//1.native跨数据库时使用,由底层方言产生;2.hibernate默认查找oracle中的hibernate_sequence,如果oracle
//中没有hibernate_sequence该序列,连oracle会报错
</id>
<property name="name" column="product_name"></property>
<property name="price" column="price"></property>
<property name="num" column="num"></property>
</class>
</hibernate-mapping>
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<Product> 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();
}
}