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();
	}
}

 

  

 

posted @ 2018-01-12 17:42  凯迪威  阅读(4781)  评论(0编辑  收藏  举报