在上一篇博客中,我简单的介绍了一下如何搭建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;
}
}
我们可以看到,在实体类中都有一个对象属性,这就把两者结合了,接下里就是映射文件
<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>
<hibernate-mapping>
<class name="com.zking.entity.Card" table="CARD">
<id name="uid" type="int">
<column name="UID" />
<generator class="foreign">
<param name="property">userparam>
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>
那么现在,我们的一对一的关系就已经建立好了。这只是简单的建立关系,如需要使用可以参考别的教程,今天就讲到这里,下篇博客就讲其他两种关系