java中hibernate_java的hibernate创建步骤

本文详细介绍了Hibernate,一个流行的Java ORM框架,它的主要功能是将Java对象与数据库表进行映射,简化数据库操作。Hibernate提供线程和进程缓存,支持多种数据库,且具有非侵入式设计。文章通过示例展示了如何配置Hibernate,创建SessionFactory,以及进行对象的保存、查找、删除和修改等操作,揭示了其在Java开发中的重要地位和易用性。
摘要由CSDN通过智能技术生成

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即可。

核心APIHibernate的API一共有6个,

分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。

通过这些接口,可以对持久化对象进行存取、事务控 制。

Hibernate的创建步骤

第一步:java project项目

再导包,即hibernate4和mysql

c92f320e0c773f450f8c5a1058c0db1c.png

Bulid Path

第一步:

4a9713be070df0942b5b07778fadda65.png

第二步:

d2095935426045ed54ea249538073322.png

2.创建 hibernate.cfg.xml

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/hib_demo01 //hib_demo01 SQLyog数据库名

root

123456

org.hibernate.dialect.MySQL5Dialect //连接的数据库类型

true

update

//mapping映射Product类(class注解时"/"用".")

3.创建包和类, 连接model层的Product.hbm.xml

770d630bfedb9f80931f613d3c602dcb.png

/p>

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

//把Product类映射成t_product表

//column代表数据库的字段

//1.native跨数据库时使用,由底层方言产生;2.hibernate默认查找oracle中的hibernate_sequence,如果oracle

//中没有hibernate_sequence该序列,连oracle会报错

4.再连接util层

b8cd1427ca413876cb591343a1384752.png

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 生成表并往表中添加数据,并对其进行增删改查

ae5d601989b25d6e35b99ef27b3e473b.png

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

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值