Java 框架之Hibernate (二、Hibernate简单的增删改及关系的简单分析)

来源:互联网 发布:星宫社 知我麻社 编辑:程序博客网 时间:2024/06/05 18:55

在上一篇博客中,我简单的介绍了一下如何搭建Hibernate框架,那么这篇博客就简单的介绍一下,使用Hibernate进行简单的增删改,查询我会在下一篇博客中去分析,这篇博客还会简单的分析一下Hibernate的关系(一对一,一对多,多对多)

好了,废话不多说,先简单的回顾一下
这里写图片描述

这就是我们在上篇博客中说到的。那么我们现在已经搭建好了框架,现在我们来进行测试,也就是简单的增删改
这里写图片描述
这里,第四步就是Hibernate执行数据库的操作,但其他步骤必须要,而且,顺序不可以乱,所以,我们可以将他封装起来,像这样

package com.zking.util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public class HibernateUtil {    private static  SessionFactory sessionFactory;     private static  Session session;     private static  Transaction transaction;    public static Session getSession(){        Configuration configuration=new Configuration().configure();        sessionFactory = configuration.buildSessionFactory();        session = sessionFactory.openSession();        transaction = session.beginTransaction();        return session;    }    public static void ConnClose(){        transaction.commit();        session.close();        sessionFactory.close();    }}

那么现在来介绍一下如何操控数据库,因为Hibernate是一个全封装的框架,所以,对数据库进行操纵极其简单,增删改就是三个方法:
session.save();//增加
session.update();//修改
session.delete();//删除

这三个方法都需要一个参数,放对象就好比如,你需要添加一行数据
你可以new一个对象然后执行上面的操作
第四步改成session.save(对象名)即可,其他操作以此类推

我们现在来分析一下Hibernate的关系
主要有一对一,一对多,多对多,我们一个一个来
一对一:
我们举一个例子 :
每个人对应有一个唯一的身份证号。这就是一对一。那么怎么具体的体现在我们Hibernate中呢??

首先是数据库的设计,我们设计两张表 user 和 card 都有两个字段 uid,uname和uid,cnum

id记得都设主键自动增长。这就是数据的设计了,在这里,并没有体现他们的关系。。他们的关系主要在实体类以及映射文件中体现

那么接下来就是实体类的设计

package com.zking.entity;public class User {    private int uid;    private String uname;    private Card card;    public Card getCard() {        return card;    }    public void setCard(Card card) {        this.card = card;    }    public User() {        super();        // TODO Auto-generated constructor stub    }    public User(String uname) {        super();        this.uname = uname;    }    public int getUid() {        return uid;    }    public void setUid(int uid) {        this.uid = uid;    }    public String getUname() {        return uname;    }    public void setUname(String uname) {        this.uname = uname;    }}
package com.zking.entity;public class Card {    private int uid;    private String cnum;    private User user;    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    public Card() {        super();    }    public Card(String cnum) {        super();        this.cnum = cnum;    }    public int getUid() {        return uid;    }    public void setUid(int uid) {        this.uid = uid;    }    public String getCnum() {        return cnum;    }    public void setCnum(String cnum) {        this.cnum = cnum;    }}

我们可以看到,在实体类中都有一个对象属性,这就把两者结合了,接下里就是映射文件

<?xml versi"1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibern.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2017-8-22 14:32:20 by Hibernate Tools 3.5.0.Final --><hibernate-mapping>    <class name="com.zking.entity.User" table="USER">        <id name="uid" type="int">            <column name="UID" />            <generator class="native" />        </id>        <property name="uname" type="java.lang.String">            <column name="UNAME" />        </property>        <one-to-one name="card" class="com.zking.entity.Card" cascade="all-delete-orphan"></one-to-one>    </class></hibernate-mapping>
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2017-8-22 14:32:20 by Hibernate Tools 3.5.0.Final --><hibernate-mapping>    <class name="com.zking.entity.Card" table="CARD">        <id name="uid" type="int">            <column name="UID" />            <generator class="foreign">                <param name="property">user</param>            </generator>        </id>        <property name="cnum" type="java.lang.String">            <column name="CNUM" />        </property>        <one-to-one name="user" class="com.zking.entity.User"></one-to-one>    </class></hibernate-mapping>

那么现在,我们的一对一的关系就已经建立好了。这只是简单的建立关系,如需要使用可以参考别的教程,今天就讲到这里,下篇博客就讲其他两种关系

原创粉丝点击