专栏首页mlweb基础之hibernate(一篇)

web基础之hibernate(一篇)

                                                               hibernate的一些基本的认识

  1.    hibenate是一个框架(framework)
  2.    hibernate是一个orm框架
  3.    orm(object relation mapping)对象关系映射框架
  4.    hibernate处于我们项目的持久层位置(正因为如此,所以有人又把hibernate称为持久层框架)
  5.    hibernate实际上就是对jdbc进行了轻量级的分装      

把对象持久化:  把对象的信息保存到数据库或者是文件.

  1. 6.       hibernate的基础还是java的反射机制

总结:  hibernate是对jdbc进行轻量级封装的orm框架,充当项目的持久层。

为什么需要Hibernate ?

快速入门案列:

Hibernate可以用在j2ee(web)项目 , 亦可以用于j2se项目中。

我们使用手动配置hibernate方式开发一个hibernate项目,完成crud操作,开发流程:

开发流程:

  1. 创建一个项目
  2. 画出一个简单的项目框架示意图
  3. 引入一个hibernate开发包(从网上下载)
  4. 开发hibernate项目有三种方式:{

1.       由Domain object àMappingàdb.(官方推荐)

2.       由DB开始,用工具生成mapping和Domain pbject.(使用较多)

3.       由映射文件开始。

使用第二种方式开发项目

创建employ表,

5. 开发domain对象和对象关系映射文件

对象关系映射文件,作用是用于指定domain对象和表的映射关系,该文件的取名有规范domain文件。  Hbm.xml.一般我们放在和domain对象同一个文件夹下(包下)

创建一个序列,j将来进行必要的增长…..

 1  <class name="Employee.java" table="employee">
 2        <!-- id元素用于指定主键属性 -->  
 3         <id name="id" column="id" type="java.lang.String">
 4         <!-- 该元素用于指定主键生成策略 hilo native increment sequence -->
 5         <!-- 
 6         <generator class="sequence">
 7         <param name="sequence">emp_seq</param>
 8         </generator>
 9         -->
10         </id>
11         <property name="id" type="java.lang.String">
12         <column name="id" not-null="false"  />
13         </property>
14         <property name="name" type="java.lang.String">
15         <column name="name" not-null="false"  />
16         </property>
17        <property name="email" type="java.lang.String">
18        <column name="email" not-null="false" />
19        </property>
20         <property name="hibernate" type="java.util.Date">
21        <column name="hibernate" not-null="false" />
22        </property>
23        </class>
  1. 1.       手动配置我们的hibernate.cfg.xml文件,该文件由于配置连接数据库的类型,driver,用户名,密码,url……,该文件的名称,我们一般不修改,
 1   <session-factory>
 2        <!-- hibernate 设计者,给我们提供了一些常用的配置 -->
 3       
 4        <!-- 配置使用的driver -->
 5        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
 6        
 7        <!-- 配置使用的url -->
 8        <property name="connection.url">jdbc:mysql://localhost:3306/bigweb</property>
 9        
10        <!-- 配置使用的username -->
11        <property name="connection.username">root</property>
12        
13        <!-- 配置使用的password -->
14        <property name="connection.password">123</property>
15        
16        <!-- 配置dialect方言,明确告诉连接那种数据库 -->
17        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
18      
19        <!-- 添加一个映射文件 -->
20        <mapping resource="com/gxj/domain/Employee.hbm.xml"/>
21      
22        </session-factory>

1.       测试文件TestMain.java

1.       现在我们来体验一下hiberbate切换数据的便利之处。

2.       这次我们使用,让hibernate自动完成 domain->映射文件->表的工作

3.       现在我们来重新配置hibernate.cfg.xml文件

 1 <hibernate-configuration>
 2        <session-factory>
 3        <!-- hibernate 设计者,给我们提供了一些常用的配置 -->
 4       
 5        <!-- 配置使用的driver -->
 6        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
 7        
 8        <!-- 配置使用的url -->
 9        <property name="connection.url">jdbc:mysql://localhost:3306/bigweb</property>
10        
11        <!-- 配置使用的username -->
12        <property name="connection.username">root</property>
13        
14        <!-- 配置使用的password -->
15        <property name="connection.password">123</property>
16        
17        <!-- 配置dialect方言,明确告诉连接那种数据库 -->
18        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
19      <!-- 让mysql自动给我们创建表 ,create,表示如果没有该表则创建,如果有,删除后,再创建-->
20      <!-- 对于update,如果有这个表,而却表的结构没有发生变化,则不创建,否则创建,如果没有表则创建新表 -->
21      
22      <property name="hbm2ddl.auto">update</property>
23        <!-- 添加一个映射文件 -->
24        <mapping resource="com/gxj/domain/Employee.hbm.xml"/>
25      
26        </session-factory>
27 1.          </hibernate-configuration>

 1  public class TestMain {
 2  /**
 3  * @param args
 4  */
 5 public static void main(String [] args){
 6   //我们使用hibernate完成crud操作[这里我们只见对象,不见表]
 7   //现在我们不是用Service,直接测试
 8   //1,创建configuration,该对象用于读取hibernate.cfg.xml,并完成初始化
 9     Configuration  configuration = new Configuration().configure();
10   //2.创建SessionFactory[这是一个会话工厂,是一个重量级的对象]
11     SessionFactory seesionFactory = configuration.buildSessionFactory();
12   Session session = seesionFactory.openSession();
13   //4.对hiberate而言,要求程序员,在进行crud的时候,使用事务提交,否者不生效
14   Transaction   transaction = session.beginTransaction();
15   //3.创建Session相当于jdbc Connection [servlet HttpSession,也不是jsp Session]
16   //添加一个雇员
17   Employee employee= new Employee();
18   employee.setId("1");
19   employee.setName("龚细军");
20   employee.setEmail("1005267096@qq.com");
21   employee.setHibernate(new Date());
22   //insert.........
23   //保存
24   session.save(employee);
25   //提交
26   transaction.commit();
27   session.close();
28 }
 1 2.    对对象映射文件,做了相应的修改
 2   <!-- id元素用于指定主键属性 -->  
 3          <!-- 对主键生成策略,我们做了修改 -->
 4         <id name="id" column="id" type="java.lang.Integer">
 5          <!-- 该元素用于指定主键生成策略 hilo native increment sequence -->
 6         <!-- 
 7         <column name="id" not-null="false"  />
 8         <generator class="sequence">
 9         <param name="sequence">emp_seq</param>
10         </generator> 
11          -->  
12          <generator class="increment"></generator>      
13         </id>
14 1.           

1.       对于第一种,表现层—>业务逻辑层—》db  这样一种结构的耦合性比较强、

2.       对于第二种。表现层à业务逻辑层—>数据持久层-àmysql_db  这种结构的数据耦合性比较低。不直接对数据库进行操作、

1.   hibernate的基本概念:

hibernate是轻量级的orm框架.orm全称是object/relation mapping [对象/关系 映射]

O : object –业务层(只对对象进行操作)

R: reletion—关系数据库

M:mapping---对象关系映射文件

------什么是POJO类? 它有什么要求?

1.       pojo类是和一张表映射的  --》简单的java对象、普通的javaBean

2.       一般我们放在com.xxx.domain下

3.       Pojo需要一份主键属性(用于标示一个pojo对象)

4.       除了主键属性外,它应当还有其他属性,(属性一般的访问权限是私有的(private)

5.       提供get/set方法

6.       他应当有一个无参的构造方法(hibernate反射)

7.       Pojo类其实就是一个javaBean,有些人将pojo也称之为Data对象.

除了Hibernate 这个orm框架,还有一些:    Apache ojb /toplink/ibatis/ejb cmp  这些都是orm框架

Configuration类:

(1).负责管理hibernate的配置信息

(2).读取hibernate.cfg.xml

(3).加载hibernate.cfg.xml配置文件中配置的驱动,url,用户名,密码,连接池。

(4).管理,*.hbm.xml对象关系文件。

Hibernate.cfg.xml文件

1.     该文件主要用于指定各个参数。是hibernate核心文件。

2.    默认放在src目录下,也可以放在别的目录下、

3.     指定连接数据库的驱动,用户名,密码,url,连接池

4.     指定对象关系映射文件的位置

5.     也可使用hibernate.properties文件来替代该文件。(推荐使用hibernate.cfg.xml)

6.     Hibernate.properties文件:作用和Hibernate.cfg.xml文件一致

7.     对象关系映射文件(.hbm.xml)

1.     该文件主要作用是建立表和类的映射关系,是不可或缺的重要文件。

2.     一般放在其映射的类同一目录下,但是不是必须的。

3.     命名方式一般是:类名.hmb.xml.,但是不是必须。

  1. 1,这里我们讨论一个通过SessionFactory获取Session的两个方法,openSession()一个getCurrentSession();
    1. 1.     openSession()是获取一个新的Session()
    2. 2.     getCurrentSession()获取和当前线程绑定Session,换言之,在同一个线程中,我们获取的session是通过一session,这样可以利于事务控制

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring mvc Controller接口

    Spring MVC  1. 继承该接口 Controller接口,重写对应方法,或者采用注解Controller,自定义映射文件 1 @Controller ...

    Gxjun
  • 编程之美 --1 : 骨牌覆盖问题·一

    题目1 : 骨牌覆盖问题·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具。今天我们要研究的是骨牌的覆盖问...

    Gxjun
  • mybatis中crud操作范例

    1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybat...

    Gxjun
  • Hibernate之HelloWorld

    qubianzhong
  • 【SSH框架】之Hibernate系列(一)

    微信公众号:compassblog 欢迎关注、转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1、Hibernate框架概述 (1)、什么是Hiber...

    compassblog
  • Hibernate框架的配置文件

    Hiernate是用来实现连接数据库、操作数据库记录的框架,因此Hibbernate框架首先需要配置连接数据库的信息。Hibernate框架使用连接池(Conn...

    无邪Z
  • Hibernate【与Spring整合】

    前言 前面已经学习了如何使用Spring与Struts2进行整合,本博文主要讲解如何使用Spring对Hibernate进行整合 Spring和Hibernat...

    Java3y
  • Hibernate之开门见山

    1:SSH框架:   Struts2:基于mvc模式的应用层框架模式(Servlet层)   Hibernate:基于持久层的框架(数据访问层)   Sprin...

    别先生
  • Hibernate第一个程序

    爱撒谎的男孩
  • hibernate进阶操作

    配置hibernate.cfg.xml配置文件 1.连接数据库 2.数据库方言 3.控制台是否显示sql语句 4.给控制台sql语句添加格式

    微醺

扫码关注云+社区

领取腾讯云代金券