zoukankan      html  css  js  c++  java
  • 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();
    	}
    }
    

     

      

  • 相关阅读:
    数字图像-概述
    Python-python打包编译成pyd或者.so,保护代码。
    计算机组成原理-概述
    9大开源云管理平台(CMP)
    计算机组成原理-CPU-CPU知识科普:秒懂主频、核心、线程、缓存、架构详解
    svn git协同管理
    DEVTMPFS
    关于flash擦除的方法
    SQLServer强制保存
    360极速浏览器无法正确getHours
  • 原文地址:https://www.cnblogs.com/lxy151/p/8277008.html
Copyright © 2011-2022 走看看