hibernate框架

1.什么是框架?

提高我们的开发效率,可以理解成是一个半成品项目。

2.hibernate框架

dao层框架

操作数据库

以面向对象的方式操作数据库

orm思想,对象关系映射,通过映射文件配置对象与数据库中表的关系。

3.hibernate框架

1>导包

required + 驱动包

2>准备实体类,以及orm元数据

3>创建主配置文件

4>书写代码测试



orm元数据

<?xml version="1.0" encoding="UTF-8">

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >

<!--配置表与实体对象的关系-->

<!--package属性:填写一个包名,在元素内部凡是需要书写完整类名的属性,可以直接写简单类名-->

<hibernate-mapping package="cn.itheima.domain">

<!--

class元素:配置实体与表的对应关系的

name:完整类名

table:数据库表名

 -->

<class name="Customer" table="cst_customer">

<!--

id:配置主键映射的属性

name:填写主键对应属性名

column:填写表中的主键列名

 -->

<id name="cust_id" column="cust_id">

<!--generator:主键生成策略-->

<generator class="native"><generator>

</id>

<!--property元素:除id之外的普通属性映射

name:填写属性名

column:填写列名

type(可选):填写列(属性)的类型。默认hibernate会自动检测实体的属性类型。

每个类型有三种填法:java类型|hibernate类型|数据库类型

not-null(可选):配置该属性(列)是否不能为空,默认值:false

length(可选):配置数据库中列的长度。默认值:使用数据库类型的最大长度。

 -->

<property name="cust_name" column="cust_name"></property>

<property name="cust_source" column="cust_source"></property>

<property name="cust_industry" column="cust_industry"></property>

<property name="cust_level" column="cust_level"></property>

<property name="cust_linkman" column="cust_linkman"></property>

<property name="cust_phone" column="cust_phone"></property>

<property name="cust_mobile" column="cust_mobile"></property>

</class>

</hinernate-mapping>

hibernate主配置

主配置在src目录下,文件名是hibernate.cfg.xml。

必选属性配置(5个)

<!--数据库驱动-->

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<!--数据库url-->

<property name="hibernate.connection.url">jdbc:mysql:///hibernate_32</property>

<!--数据库连接用户名-->

<property name="hibernate.connection.username">root</property>

<!--数据库连接密码-->

<property name="hibernate.connection.password">1234</property>

<!--数据库方言

不同的数据库中,sql语法略有区别,指定方言可以让hibernate框架在生成sql语句时,针对数据库的方言生成

sql99标准:

DDL:定义语言  库表的增删改查

DCL:    控制语言  事务权限

DML:操作语言   增删改查

注意:MYSQL在选择方言时,请选择最短的方言

 -->

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

可选属性配置(3个)

<!--将hibernate生成的sql语句打印到控制台-->

<property  name="hibernate.show_sql">true</property>

<!--将hibernate生成的sql语法格式化(语法缩进)-->

<property name="hibernate.format_sql">true</property>

<!-- 

自动导出表结构,自动建表

hibernate.hbm2ddl.auto  create 自动建表,每次框架运行都会创建新的表,以前表将会被覆盖,表数据会丢失(开发环境中测试使用)

hibernate.hbm2ddl.auto  create-drop  自动建表,每次框架运行结束都会将所有表删除(开发环境中测试使用)

hibernate.hbm2ddl.auto  update(推荐使用) 自动生成表,如果已经存在不会再生成,如果表有变动,自动更新表(不会删除任何数据)

hibernate.hbm2ddl.auto  validate  校验,不自动生成表,每次启动会校验数据库中表是否正确。

 -->

元数据引入配置

<!--引入orm元数据

路径书写:填写src下的路径

 -->

<mapping resource="cn.itheima/domain/Customer.hbm.xml" />



hibernateAPI详解

Configuration

Configuration功能:配置加载类,用于加载主配置,orm元数据加载

//1.创建,调用空参构造

Configuration  conf= new Configuration()

//2.读取指定主配置文件(5个函数)=>空参加载方法,加载src下的hibernate.cfg.xml文件

conf.configure();

//3.读取指定orm元数据(扩展),如果主配置中已经引入映射配置,不需要手动加载

//conf.addResource(resourceName);

//conf.addClass(persistentClass);

SessionFactory

//SessionFactory功能:用于创建操作数据库核心对象session对象的工厂。简单说功能就一个 ----创建session对象

//注意:1.sessionfactory 负责保存和使用所有配置信息,消耗内存资源非常大。

2.SessionFactory属于线程安全的对象设计。

//结论:保证在web项目中,只创建一个sessionFactory.

//4.根据配置信息,创建SessionFactory对象

SessionFactory  sf= conf.buildSessionFactory();

//5.获得session

// 打开一个新的session对象

sf.openSession();

//获得一个与线程绑定的session对象

sf.getCurrentSession();

Session

//session 对象功能:表达hibernate框架与数据库之间的连接(会话)。session类似于JDBC年代的connection对象。还可以完成对数据库中数据的 增删改查操作。

//session是hibernate操作数据库的核心对象

//session获得操作事务的Transaction对象

//获得操作事务的tx对象

Transaction tx = session.getTransaction();

//开启事务并获得操作事务的tx对象(建议使用)

Transaction tx2=session.beginTransaction();

//----------新增操作

customer c=new Customer();

c.setCust_name("传智播客");

session.save(c);

//----------

//---------session的查询

//查询id为1的customer对象

session.get(Customer.class,1l);

//----------

//---------session的修改

//1.获得要修改的对象

Customer  c=session.get(Customer.class,1l);

//2.修改

c.setCust_name("黑马程序员");

//3.执行update

session.update(c);

//---------

//-----------session的删除

//删除id为1的customer对象

//1.获得要修改的对象

Customer  c=session.get(Customer.class,1l);

//2.调用delete删除对象

session.delete(c);


//--------

Transaction

tx2.commit();//提交事务

//tx2.rollback();//回滚事务

session.close();//释放资源

sf.close();//释放资源


CRM练习:保存客户

crm:customer  relation  manager 客户关系管理系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值