分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

一、持久层框架(Hibernate)一

发布时间:2023-09-06 01:44责任编辑:林大明关键词: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提供的对象与表的映射关系,映射到数据库表中去。

一、持久层框架(Hibernate)一

原文地址:https://www.cnblogs.com/drq1/p/8510191.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved