Hibernate初级入门
小编:管理员 155阅读 2022.09.14
一、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
}
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(放在同一个包下)
LinkMan.hbm.xml:
五。创建核心配置文件:
要求:放到src目录下
名称必须写成:hibernate.cfg.xml
update:如果有表,更新,如果没得表,创建表
–>
六: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{ } } }
相关推荐
- 经典笔试题-JDBC及Hibernate篇 五、JDBC 及Hibernate:(共12 题:基础10 道,中等难度2 道)110、数据库,比如100 用户同时来访,要采取什么技术解决?【基础】 答:可采用连接池。111、什么是ORM?【基础】 答:对象关系映射(Object—Relational Mapping,简称ORM)是一种为了解决面向对象…
- 3DMAX提示和技巧 本主题标识使用 Civil View 的一些重要提示和技巧。常规使用屏幕分辨率至少为 1280x1024 的 Civil View。低于此分辨率时,一些面板将占用过多屏幕空间。 将视口设置为线框显示以达到最佳性能。 要尽可能简化用户界面,请在单个视口中工作并关闭 3ds Max 命令面…