本文包括:
1、CRM 项目的整体介绍
2、Hibernate 框架概述
3、Hibernate 快速入门
4、Hibernate 常用的配置文件
5、Hibernate 常用的接口和类
1、CRM 项目的整体介绍
-
什么是 CRM
-
CRM(Customer Relationship Management)客户关系管理,是利用相应的信息技术以及互联网技术来协调企业与顾客间在销售、营销和服务上的交互,向客户提供创新式的个性化的客户交互和服务的过程
-
其最终目标是将面向客户的各项信息和活动集成起来,组建一个以客户为中心的企业,实现对面向客户的活动的全面管理
-
-
CRM 的模块
-
CRM 系统实现了对企业销售、营销、服务等各阶段的客户信息、客户活动进行统一管理。
-
CRM 系统功能涵盖企业销售、营销、用户服务等各各业务流程,业务流程中与客户相关活动都会在 CRM 系统统一管理。
-
下边列出一些基本的功能模块,包括:
-
客户信息管理
-
联系人管理
-
商机管理
-
统计分析等
-
-
-
模块的具体功能
-
客户信息管理
- 对客户信息统一维护,客户是指存量客户或拟营销的客户,通过员工录入形成公司的“客户库”是公司最重要的数据资源。
-
联系人管理
- 对客户的联系人信息统一管理,联系人是指客户企业的联系人,即企业的业务人员和客户的哪些人在打交道。
-
客户拜访管理
- 业务员要开发客户需要去拜访客户,客户拜访信息记录了业务员与客户沟通交流方面的不足、采取的策略不当、有待改进的地方或值得分享的沟通技巧等方面的信息。
-
综合查询
- 客户相关信息查询,包括:客户信息查询、联系人信息查询、商机信息查询等
-
统计分析
- 按分类统计客户信息,包括:客户信息来源统计、按行业统计客户、客户发展数量统计等
-
系统管理
系统管理属于crm系统基础功能模块,包括:数据字典、账户管理、角色管理、权限管理、操作日志管理等
-
-
SSH 框架
-
Hibernate 的开发位置
学习路线:
-
Hibernate 入门:主要是学习框架的入门,自己搭建框架,完成增删改查的操作
-
Hibernate 一级缓存:主要学习一级缓存、事务管理和基本的查询
-
Hibernate 进阶:主要学习一对多和多对多的操作等
-
Hibernate 查询优化:基本查询和查询的优化
-
2、Hibernate 框架概述
-
Hibernate 框架的概述
-
Hibernate 是一个开放源代码的对象关系映射(ORM)框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。
-
Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在 Servlet/JSP 的 Web 应用中使用。
-
Hibernate 是轻量级 JavaEE 应用的持久层解决方案,是一个关系数据库ORM框架
-
-
记住:Hibernate 是一个持久层的 ORM 框架!!!
-
什么是ORM(对象关系映射)
-
ORM映射:Object Relational Mapping
- O:面向对象领域的 Object(JavaBean 对象)
- R:关系数据库领域的 Relational(表的结构)
- M:映射 Mapping(XML 的配置文件)
-
简单一句话:Hibernate 使程序员通过操作对象的方式来操作数据库表记录
-
-
Hibernate 优点:
-
Hibernate 对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
-
Hibernate 是一个基于 jdbc 的主流持久化框架,是一个优秀的 ORM 实现,它很大程度的简化了 DAO 层编码工作。
-
Hibernate 的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系。
-
3、Hibernate 快速入门
-
下载Hibernate 5的运行环境
-
创建表结构
-
建表语句如下
Create database hibernate_day01; Use hibernate_day01; CREATE TABLE `cst_customer` ( `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)', `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)', `cust_user_id` bigint(32) DEFAULT NULL COMMENT '负责人id', `cust_create_id` bigint(32) DEFAULT NULL COMMENT '创建人id', `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源', `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业', `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别', `cust_linkman` varchar(64) DEFAULT NULL COMMENT '联系人', `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话', `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话', PRIMARY KEY (`cust_id`) ) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;
-
-
搭建 Hibernate 的开发环境
-
创建 WEB 工程,引入 Hibernate 开发所需要的 jar 包
-
MySQL的驱动jar包
-
Hibernate开发需要的jar包(资料/hibernate-release-5.0.7.Final/lib/required/所有jar包)
-
日志jar包(资料/jar包/log4j/所有jar包)
-
-
编写HibernateUtil的工具类
-
正因为 SessionFactory 比较特别,每次使用时都是固定的代码,所以可以把代码抽取出来,编写工具类。
-
具体代码如下
public class HibernateUtil { private static final Configuration cfg; private static final SessionFactory factory; static{ // 给常量赋值 // 加载配置文件 cfg = new Configuration().configure(); // 生成factory对象 factory = cfg.buildSessionFactory(); } // 获取Session对象 public static Session openSession(){ return factory.openSession(); } }
-
-
Session 接口
-
概述
-
Session 是在 Hibernate 中使用最频繁的接口。也被称之为持久化管理器。它提供了和持久化有关的操作,比如添加、修改、删除、加载和查询实体对象
-
Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心
-
Session是线程不安全的
-
所有持久化对象必须在 session 的管理下才可以进行持久化操作
-
Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久化操作的数据都缓存在 session 对象处
-
持久化类与 Session 关联起来后就具有了持久化的能力
-
-
特点
-
不是线程安全的。应避免多个线程使用同一个 Session 实例
-
Session 是轻量级的,它的创建和销毁不会消耗太多的资源。应为每次客户请求分配独立的 Session 实例
-
Session 有一个缓存,被称之为 Hibernate 的一级缓存。每个 Session 实例都有自己的缓存
-
-
常用的方法
-
save(obj)
/** * 测试工具类 */ @Test public void testSave2(){ // 使用工具类简化代码 Session session = HibernateUtils.getSession(); Transaction tr = session.beginTransaction(); Customer c = new Customer(); c.setCust_name("小风"); session.save(c); // 提交事务 tr.commit(); // 释放资源 session.close(); }
-
get(Class,id)
2个参数:class 表示要查询的 JavaBean 的 class 对象,id 为主键的值。
例如,需要查 Customer 对应的表中主键值为7(Long 类型)的记录,代码如下:
Customer c = session.get(Customer.class, 7L);
-
delete(obj)
注意:在这里是对数据库进行操作,所以删除的是数据库的表中的某一行记录,所以首先要调用上面的 get 方法,得到对象后,再删除。
Customer c = session.get(Customer.class, 7L); // 删除客户 session.delete(c);
-
update(obj)
Customer c = session.get(Customer.class, 95L); // 设置客户的信息 c.setCust_name("小苍"); c.setCust_level("3"); // 修改 session.update(c);
-
saveOrUpdate(obj) -- 保存或者修改(如果没有数据,保存数据。如果有,修改数据)
-
保存
Customer c = new Customer(); // c.setCust_id(10L); 这是错误做法!千万不能自己设置主键去保存! c.setCust_name("测试"); session.saveOrUpdate(c);
-
修改
// 先查询再改 Customer c = session.get(Customer.class, 6L); c.setCust_name("小泽"); session.saveOrUpdate(c);
-
-
createQuery() -- HQL语句的查询的方式
// 创建查询的接口 Query query = session.createQuery("from Customer"); // 查询该表所有的数据 List<Customer> list = query.list(); for (Customer customer : list) { System.out.println(customer); }
-
-
-
Transaction 接口
-
Transaction 是事务的接口
-
常用的方法
-
commit() -- 提交事务
-
rollback() -- 回滚事务
-
-
特点
-
Hibernate 框架默认情况下事务不自动提交.需要手动提交事务
-
如果没有开启事务,那么每个 Session 的操作,都相当于一个独立的事务
在如上的代码中,都开启了事务,并且手动提交了事务。
-
-
示例:
/** * 测试保存 */ @Test public void testSave3(){ Session session = null; Transaction tr = null; try { // 获取session session = HibernateUtils.getSession(); // 开启事务 tr = session.beginTransaction(); // 执行代码 Customer c = new Customer(); c.setCust_name("哈哈"); // 保存 session.save(c); // 提交事务事务 tr.commit(); } catch (Exception e) { // 回滚事务 tr.rollback(); e.printStackTrace(); }finally{ // 释放资源 session.close(); } }
-
-
网友评论