zoukankan      html  css  js  c++  java
  • hibernate框架的搭建与简单实现增删改

      Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。

      首先搭建环境:

    一、导入jar包。
      1.hibernate的jar包

      2.jdbc的jar包

    二、配置Hibernate。建立hibernate.cfg.xml文件
      相关的内容:
      1.hibernate.cfg.xml -- 包所在的文件夹的project里去搜索复制
      2.每个配置项的值:project/etc/hibernate.properties中搜索

     新建hibernate.cfg.xml

    <!--
      ~ Hibernate, Relational Persistence for Idiomatic Java
      ~
      ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
      ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
      -->
    <!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="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password"></property>
            <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK</property>
            <property name="show_sql">true</property>//显示sql语句,为true则显示,false为不显示
            <!-- 表映射加载 -->
            <mapping resource="com/model/Fruit.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>

    ORM
    三、准备数据库
    四、准备实体(建议使用:引用类型。建议类名属性名与列名一致)
    五、准备映射文件 实体类名.hbm.xml 例:Fruit.hbm.xml
    方法:从project文件夹中搜索hbm.xml。复制改
    在hibernate.cfg.xml下,加上<mapping resouse="映射文件路径"/>映射

    新建Fruit.hbm.xml

    <?xml version="1.0"?>
    <!--
      ~ Hibernate, Relational Persistence for Idiomatic Java
      ~
      ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
      ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
      -->
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping default-lazy="false" package="com.model">
    
        <class name="Fruit" table="Fruit">
            <id name="ids">//主键
                <generator class="assigned"/>
            </id>
            <property name="name"/>//非主键
            <property name="price"/>
            <property name="source"/>
            <property name="numbers"/>
            <property name="image"/>
            
        </class>
        
    
    </hibernate-mapping>

     新建一个测试类test.java

    package com.test;
    
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.*;
    
    import com.model.Fruit;
    
    
    
    public class Ceshi {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            Configuration config = new Configuration().configure();//读取hibernate.cfg.xml的配置,加载Hibernate的类库
            SessionFactory factory= config.buildSessionFactory();//根据配置,生成session工厂
            Session session = factory.openSession();//用工厂来生成session
            //System.out.println(session.isConnected());
            
            //insert
    //        Fruit f = new Fruit();
    //        f.setIds("s001");
    //        f.setName("猕猴桃");
    //        f.setPrice(10.0);
    //        f.setNumbers(200);
    //        session.beginTransaction();//事务开始
    //        session.save(f);//用session保存到数据库
    //        session.getTransaction().commit();//事务提交
            
            //select
    //     查单条记录 
    // Fruit f= new Fruit(); // // f=session.get(Fruit.class,"s001"); // System.out.println(f.getIds()+f.getName()+f.getNumbers());   //查所有 // List<Fruit> list= session.createQuery("from Fruit").getResultList(); // for(Fruit f:list){ // System.out.println(f.getIds()+f.getName()+f.getNumbers()); // } //delete // Fruit f = session.get(Fruit.class, "s001"); // if(f!=null){ // session.beginTransaction(); // session.delete(f); // session.getTransaction().commit(); // } //update Fruit f = session.get(Fruit.class, "k007"); if(f!=null){ session.beginTransaction(); f.setName("香蕉大棒子"); f.setNumbers(200); session.update(f); session.getTransaction().commit(); } session.close(); } }

    声明:

    这里的session不是web中的session.
    web中的session代表的是客户端与web服务器之间的会话
    这里的session指的是程序与数据库之前的会话,它是由hibernate进行管理的

  • 相关阅读:
    WebApi整合Unity容器实现IOC编程
    用户登录
    Mvc验证码
    代理模式 实现aop
    装饰器模式,实现aop
    Redis
    图片缩放
    递归操作文件
    几种文件的读写方式
    C#WebApi自动生成文档
  • 原文地址:https://www.cnblogs.com/claricre/p/6497586.html
Copyright © 2011-2022 走看看