核心提示:Hibernate初级入门:一、Hibernate扮演的是什么角色。Hibernate在javaee中的三层结构中扮演的是DAO层框架使用Hibernate框架简化了JDBC复杂的代码,是一种开源的轻...
Hibernate初级入门:一、Hibernate扮演的是什么角色。
Hibernate在javaee中的三层结构中扮演的是DAO层框架
使用Hibernate框架简化了JDBC复杂的代码,是一种开源的轻量级的框架
二、如何搭建Hibernate的环境
1.导入包:
记得build path
三、ORM
Object Reational Mapping----对象关系模型
在web阶段学习的javabean,现在叫实体类;
一个实体类对应数据库中一个表,,实体类中的属性对应数据库表字段
比如:
private String userName;<--------------->t_userName(这个我们要通过映射文件来创建)
四、如何写一个实体类的映射文件:
项目结构:
Customer:客户 LinkMan:联系人
场景:一个客户对应多个联系,一个联系人对应一个客户
package cn.cq.enty; import java.util.HashSet; import java.util.Set; public class Customer { //客户id private Integer cid; //客户名称 private String custName; //客户级别 private String custLevel; //客户来源 private String custSource; //联系电话 private String custPhone; //手机 private String custMobile; //客户实体类中表示对个联系人 private Set setLinkMan = new HashSet(); public Set getSetLinkMan() { return setLinkMan; } public void setSetLinkMan(Set setLinkMan) { this.setLinkMan = setLinkMan; } public Customer() { super(); } public Customer(Integer cid, String custName, String custLevel, String custSource, String custPhone, String custMobile) { super(); this.cid = cid; this.custName = custName; this.custLevel = custLevel; this.custSource = custSource; this.custPhone = custPhone; this.custMobile = custMobile; } public Integer getCid() { return cid; } public void setCid(Integer cid) { this.cid = cid; } public String getCustName() { return custName; } public void setCustName(String custName) { this.custName = custName; } public String getCustLevel() { return custLevel; } public void setCustLevel(String custLevel) { this.custLevel = custLevel; } public String getCustSource() { return custSource; } public void setCustSource(String custSource) { this.custSource = custSource; } public String getCustPhone() { return custPhone; } public void setCustPhone(String custPhone) { this.custPhone = custPhone; } public String getCustMobile() { return custMobile; } public void setCustMobile(String custMobile) { this.custMobile = custMobile; } } package cn.cq.enty; public class LinkMan { private Integer lkm_id; // 联系人编号(主键) private String lkm_name;// 联系人姓名 private String lkm_gender;// 联系人性别 private String lkm_phone;// 联系人办公电话 //表示一个联系人对应一个客户 private Customer customer; public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } public LinkMan() { super(); } public LinkMan(Integer lkm_id, String lkm_name, String lkm_gender, String lkm_phone) { super(); this.lkm_id = lkm_id; this.lkm_name = lkm_name; this.lkm_gender = lkm_gender; this.lkm_phone = lkm_phone; } public Integer getLkm_id() { return lkm_id; } public void setLkm_id(Integer lkm_id) { this.lkm_id = lkm_id; } public String getLkm_name() { return lkm_name; } public void setLkm_name(String lkm_name) { this.lkm_name = lkm_name; } public String getLkm_gender() { return lkm_gender; } public void setLkm_gender(String lkm_gender) { this.lkm_gender = lkm_gender; } public String getLkm_phone() { return lkm_phone; } public void setLkm_phone(String lkm_phone) { this.lkm_phone = lkm_phone; } } Customer.hbm.xml(放在同一个包下) "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "https://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> LinkMan.hbm.xml: "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "https://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 五。创建核心配置文件: 要求:放到src目录下 名称必须写成:hibernate.cfg.xml "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "https://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> com.mysql.jdbc.Driver jdbc:mysql:///hibernate03 root bdqn org.hibernate.dialect.MySQLDialect true true update thread 六:HibernateUtils: package cn.cq.test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static Configuration cfg = null; private static SessionFactory sessionFactory = null; static { cfg = new Configuration().configure(); sessionFactory = cfg.buildSessionFactory(); } public static SessionFactory getSessionFactory(){ return sessionFactory; } public static Session getSession(){ return sessionFactory.getCurrentSession(); } } 七,实现CURD操作: package cn.cq.test; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import cn.itcast.enty.Customer; import cn.itcast.enty.LinkMan; public class HibernateOneToMang { @Test public void add(){ Session session = null; Transaction tx = null; try { session = HibernateUtils.getSession(); tx = session.beginTransaction(); Customer cus = new Customer(); cus.setCustName("baidu"); cus.setCustLevel("vip"); cus.setCustSource("network"); cus.setCustPhone("111"); cus.setCustMobile("999"); LinkMan linkMan = new LinkMan(); linkMan.setLkm_name("kevin"); linkMan.setLkm_gender("nan"); linkMan.setLkm_phone("3333"); cus.getSetLinkMan().add(linkMan); session.save(cus); tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ } } @Test public void delete(){ Session session = null; Transaction tx = null; try { session = HibernateUtils.getSession(); tx = session.beginTransaction(); Customer cus = session.get(Customer.class, 1); session.delete(cus); tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ } } @Test public void update(){ Session session = null; Transaction tx = null; try { session = HibernateUtils.getSession(); tx = session.beginTransaction(); Customer qq = session.get(Customer.class,3); LinkMan cidy = session.get(LinkMan.class, 3); qq.getSetLinkMan().add(cidy); cidy.setCustomer(qq); tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ } } }