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进行管理的

 

转载于:https://www.cnblogs.com/claricre/p/6497586.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐