zoukankan      html  css  js  c++  java
  • 一、持久层框架(Hibernate)

    一、Hibernate

      使用JDBC做数据库相关功能开发会做很多重复性的工作,创建连接,关闭连接,把字段逐一映射到属性中等。Hibernate把这些进行封装起来,使得数据库访问变得轻松简单。

    1、创建数据库,数据表

    --创建数据库
    create database test;
    --使用数据库
    use test;
    --创建数据表
    CREATE TABLE product_table (
      id int(11) NOT NULL AUTO_INCREMENT,
      name varchar(30) ,
      price float ,
      PRIMARY KEY (id)
    ) DEFAULT CHARSET=UTF8;

    2、创建一个java project,然后倒入hibernate所以来的jar包

    导入jar包:右键project-->property-->java build path-->libaries-->add external jars

    由于hibernate不同版本之间的jar包存在兼容性问题,应该使用对应的版本jar包。

    3、创建实体类Bean

      实体类用于映射数据库中的表product_table

    package com.demo.pojo;
    
    public class Product{
        private int id;
        private String name;
        private float price;
        
        //实现属性对应的getter/setter方法
        public int getId(){
            return id;
        }
        public void setId(int id){
            this.id=id;
        }
        public String getName(){
            return name;
        }
        public void setName(String name){
            this.name=name;
        }
        public float getPrice(){
            return price;
        }
        public void setPrice(float price){
            this.price=price;
        }
    }
    View Code

    4、配置Product.hbm.xml

      这个xml用来映射Product类对应数据库中的product_table表

    文件名Product.hbm.xml,P一定要大写,和类名保持一致

    <!--表示类Product对应表product_table-->
    <class name="Product" table="product_table">
    <!--表示属性id,映射表字段id-->
    <id name="id" column="id">
        <generator class="native"></generator><!--id的自增方式采用数据库本地方式-->
    </id>
    View Code

    具体的配置的映射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.how2java.pojo">
        <class name="Product" table="product_">
            <id name="id" column="id">
                <generator class="native">
                </generator>
            </id>
            <property name="name" />
            <property name="price" />
        </class>
        
    </hibernate-mapping>
    View Code

    5、配置hibernate.cfg.xml

      在src目录下创建hibernate.cfg.xml,用来配置访问数据库要用到的驱动,url,账号密码,数据库方言等 

    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

    数据库方言含义:因为在代码层面,开发的时候并不会关心底层到底使用Oracle还是用MySQL,写得代码都是一样的。可是Oracle和MySQL所用的sql语句的语法是有写区别,那么这件事就交给hibernate来做了,这时候告诉hibernate底层用到的是什么数据库,它才知道用什么样的方言去对话。

    <property name="current_session_context_class">thread</property>

    hibernate事务管理方式,也就是说每个线程就是一个事务。

    <property name="show_sql">true</property>

    表示是否在控制台显示执行的sql语句

    <property name="hbm2ddl.auto">update</property>

    表示是否会自动更新数据库的表结构,其实不需要创建表,因为hibernate会自动创建表结构,就是因为有这个配置属性。

    <mapping resource="com/demo/pojo/Product.hbm.xml" />

    表示hibernate会去识别Product这个实体类

    6、创建一个测试类TestHibernate

    创建一个Product对象,然后通过hibernate把这个对象,插入到数据库中。

    hibernate执行的基本步骤是这样的:

    6.1、首先获取SessionFactory

    6.2、通过SessionFactory获取一个Session

    6.3、在Session基础上开启一个事务

    6.4、通过调用Session的save方法把对象保存到数据库

    6.5、提交事务

    6.6、关闭Session

    6.7、关闭SessionFactory

    package com.demo.test;
    
    import org.hibernagte.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    import com.demo.pojo.Product;
    
    public class TestHibernate{
        public static void main(String[] args){
            SessionFactory sf=new Configuration.configure().buildSessionFactory();//建立SessionFactory
            Session s=sf.openSession();//通过SessionFactory获取一个Session并打开
            s.beginTransaction();//在Session的基础上打开事务
            Product p=new Product();//创建Product对象
            p.setName("demo");
            p.setPrice(100);
            s.save(p);//调用Session的save()方法保存对象的数据
            
            s.getTransaction().commit();//提交事务
            s.close();//关闭Session
            sf.close();//关闭SessionFactory
        }
    }
    View Code

    基本原理:

    应用程序通过Hibernate把一个Product对象插入到数据库的product_table中,首先通过配置文件hibernate.cfg.xml提供链接数据库的基本信息,账号,密码,数据库ip,端口等信息,建立数据库连接,然后通过Product.hbm.xml提供的对象与表的映射关系,映射到数据库表中去。

  • 相关阅读:
    如何把.cs文件编译成DLL文件
    单元测试的性能测试库
    MVC5在Mono上的各种坑
    基于Selenium的自动化测试 C#版(1)
    关于最近的CSRF攻击
    ILspy反编译工具
    关于公司内部的Nuget服务
    log4net入门
    java 多线程以及线程池
    Arraylist 和 linkedlist || hashset 和treeset. || hashMap 和 TreeMap
  • 原文地址:https://www.cnblogs.com/drq1/p/8510191.html
Copyright © 2011-2022 走看看