一、简单介绍
  Hibernate是一种对JDBC做了轻量级封装的对象---关系映射工具,所谓轻量级封装,是指Hibernate并没有完全封装JDBC,Java应用即可以通过Hibernate API访问数据库,还可以绕过Hibernate API,直接通过JDBC API来访问数据库。
 1、
Hibernate官网下载地址http://www.hibernate.org。现在最新的是: hibernate-release-4.1.7.Final.zip
解压后的目录结构:
  Documentation:该文件夹下是开发帮助文档
  Lib:该文件夹是开发使用的库,其中该文件夹下面的required目录是开发时必须导入的JAR文件;
  Project:该文件夹是项目源码文件
2、持久化JAVA类必须遵循的原则
 
A、为类的持久化字段声明访问方法(get/set),Hibernate对JavaBeans风格的属性实行持久化。
  B、实现一个默认的构造方法,这样的话Hibernate就可以使用Constructor.newInstance()方法来实例化对象。
  C、如果是集合类型的属性,它的类型必须定义为集合的接口,例如:List、Set
  D、提供一个标识属性(Identifier property),如果没有该属性,一些功能不起作用,比如:级联更新,session.saveOrUpdate()。
二、Hibernate开发步骤
   首先项目中应该把
required目录中的所有jar包和要连接的数据库的驱动jar包构建到Build Path中!!!

1、编写实体类 UserInfor.java
切记:实体类中的属性名有二个以上(含两个)的小写字母开头!!!!
  package com.entity;
import java.util.Date;
public class UserInfor {
   
    private int userId;
    private String userName;
    private int userAge;
    public UserInfor() {
        // 一定要有一个无参的构造方法,因为Hibernate都是根据他生成对象的
    }
    public UserInfor(int userid)
    {// 最好要有一个含主键的构造方法,因为在Hibernate中便于查询
        this.userId = userid;
    }
    //....下面都是get***()set***()封装属性
    }
  2、创建实体类的映射文件***.hbm.xml(与实体类同包,并且名字可以自定义,这里是:
userInfor.hbm.xml
   可以在上面解压后的Project文件夹中搜索
hbm.xml,找到示例文在加以修改即可!!!
 
  <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.entity">

<class name="UserInfor" table="Wuser" >
        <id name="userId" >
            <generator class="native"/>
        </id>
        <property name="userName"/>
        <property name="userAge"/>
        <property name="userBirthday"/>
    </class>
</hibernate-mapping>
 ####:说明: 具体Hibernate个元素详解请看:
http://chen25362936.blog.163.com/blog/static/2565547420101113112752675/   
    
根元素:<hibernate-mapping>,每一个hbm.xml文件都有唯一的一个根元素,包含一些可选的属性 package:指定一个包前缀,即该xml文件的位置
          <class>定义类:根元素的子元素,用以定义一个持久化类与数据表的映射关系,如下是该元素包含的一些可选的属性--》name:持久化类(或者接口)的Java全限定名,如果这个属性不存在,则Hibernate将假定这是一个非POJO的实体映射;table:对应数据库表名
            <id>定义主键:Hibernate使用OID(对象标识符)来标识对象的唯一性,OID是关系数据库中主键在Java对象模型中的等价物,在运行时,Hibernate根据OID来维持Java对象和数据库表中记录的对应关系

1)name:持久化类的标识属性的名字

2)column:数据库表的主键这段的名字

<generator>设置主键生成方式:该元素的作用是指定主键的生成器,通过一个class属性指定生成器对应的类。(通常与<id>元素结合使用),--native是Hibernate主键生成器的实现算法之一,由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。

<property>定义属性:用于持久化类的属性与数据库表字段之间的映射,包含如下属性:

1)name:持久化类的属性名,以小写字母开头

2)column:数据库表的字段名

3、编写Hibernate的配置文件hibernate.cfg.xml(这里的名字是固定的)

  Hibernate配置的两种方法:
属性文件:hibernate.properties
调用代码:Configuration cfg=new Configuration();
XML文件:hibernate.cfg.xml
调用代码: Configuration cfg=new Configuration().configure();

关于 hibernate.cfg.xml的样例可以到上面解压的Project/etc/下查找,在该样例下修改即可!!!!该xml文件中要设置的属性名和值可以在Project/etc/hibernate.properties文件中查找到!!!

 <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="show_sql">true</property><!--控制台中显示sql语句-->
         <property name="format_sql">true</property>    <!--格式化sql语句-->

<!-- 通过getCurrentSession创建的session会绑定到当前线程 -->
        <property name="current_session_context_class">thread</property>

<!--数据库连接要使用的参数-->       
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.connection.username">bam1</property>
        <property name="hibernate.connection.password">bam1</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.3.252:1521:orcl</property>
        <!--设置数据库定义语言为:更新数据库操作-->   
        <property name="hibernate.hbm2ddl.auto">update</property>

  <!--如果使用JUnit进行测试:就要加上下面这句话-->  

       <property name="javax.persistence.validation.mode">none</property>

<!--加载映射文件:映射文件全路径###并且一定要定义在下方-->   
        <mapping resource="com/entity/Person.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

 ####:说明:(关于Hibernate配置文件详解请看:http://www.24xuexi.com/w/2012-02-23/98592.html)

4、测试类中操作

public  void add()
    {
      
        //第一步:读取Hibernate的配置文件  hibernamte.cfg.xml文件
        Configurationcon=new Configuration().configure();
        //第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
        ServiceRegistryBuilderregbulider=newServiceRegistryBuilder().applySettings(con.getProperties());
        //创建注册服务
        ServiceRegistryreg=regbulider.buildServiceRegistry();
        //第三步:创建会话工厂
        SessionFactorysessionFactory=con.buildSessionFactory(reg);
        //第四步:创建数据操作会话
        Sessionsession=sessionFactory.openSession();

        //创建对象
         */
        UserInfo user=new UserInfor();
        user.setUserAge(20);
        user.setUserBirthday(new Date());
        user.setUserName("张三");
        /*
       //创建事物
        Transactiontran=session.beginTransaction();

        //保存数据
        session.save(user);//update(object):修改;get(class,Serializable ):根据主键查询//(查询时可以不使用事物)
        //提交事物
       tran.commit();
        //关闭对话
        session.close();

      
}

Hibernate配置详解相关推荐

  1. Hibernate 配置详解(5)

    9) hibernate.batch_fetch_style: 该配置是hibernate4.2.0新添加的,使用这个设置可以配置hibernate在做batch-fetch的时候,生成SQL的策略. ...

  2. hibernate.hbm2ddl.auto配置详解

    hibernate.hbm2ddl.auto配置详解 http://www.cnblogs.com/feilong3540717/archive/2011/12/19/2293038.html hib ...

  3. 【Hibernate】hibernate主键生成策略与配置详解

    //####################################################### **Hibernate各种主键生成策略与配置详解** //############# ...

  4. (转)Hibernate的配置详解

    http://blog.csdn.net/yerenyuan_pku/article/details/65041077 在<Hibernate快速入门>一文中,我有讲到Hibernate的 ...

  5. struts2+hibernate+spring配置详解

    #struts2+hibernate+spring配置详解 struts2+hibernate+spring配置详解 哎 ,当初一个人做好难,现在终于弄好了,希望自学这个的能少走些弯路. 以下是自己配 ...

  6. SpringBoot的配置详解application

    SpringBoot的配置文件application有两种文件格式,两种配置的内容是一致的,只是格式不一致. 1.application.properties 2.application.yml或者a ...

  7. SpringBoot—整合log4j2入门和log4j2.xml配置详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...

  8. ssh2的application.xml配置文件配置详解

    ssh2的application.xml配置文件配置详解 1.导入其他的配置文件.在ssh项目中可以导入其他的配置文件,导入的格式为: <import resource="classp ...

  9. SpringBoot整合Log4j2以及配置详解

    文章目录 标题SpringBoot整合Log4j2以及配置详解 1.加入依赖 2.在src.java.main.resources目录下创建log4j2.xml文件 log4j2.xml文件内容如下: ...

最新文章

  1. 高校疯传!法国TOP双硕算法专家匠心打造一套保姆级AI学习笔记并公开(保姆级/20G高清/PPT/代码)...
  2. dup and dup2的剖析
  3. sdwan技术发展正蚕食mpls市场—vecloud
  4. 【Python-ML】自适应线性神经网络(Adaline)
  5. Bzoj4503 两个串
  6. Linux引到过程与服务控制
  7. exchange2013-Database is mandatory on UserMailbox..
  8. Linux Shell脚本专栏_批量检测网站是否异常脚本_08
  9. 董付国老师Python系列教材推荐与选用参考
  10. C++自学24:唯一智能指针(make_unique/unique_ptr/reset/release/get/13.1)
  11. mmo游戏开发应在profile下运行,才能保证正式运行不卡
  12. win7台式机系统调节显示屏亮度
  13. nginx反代+varnish缓存+后端LAMP平台集群实现
  14. JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码
  15. python标注cad桩位_如何在图纸上作出桩位坐标及大量编号
  16. 计算机程序员证书限制条件,高级程序员考试报名条件有什么限制?
  17. 关于京东评价数目,淘宝评价数目延迟加载
  18. 安卓数据转移到iphone老是中断_99元1次!iOS、安卓跨系统互传游戏数据:《王者荣耀》角色转移来了...
  19. Vue - 前段框架
  20. HLK-B36 WIFI/BLE 二合一透传沙雕按键说明

热门文章

  1. CUDA简易安装教程
  2. #pragma指令与#ifndef指令
  3. visualize_object_model_3d算子说明
  4. java 运算符_java 运算符
  5. html5 图形化操作,HTML5的图像及动画图形操作-20210525222751.ppt-原创力文档
  6. 一蹴而就的解释是什么_聪明的孩子喜欢问“为什么”,还是喜欢问“为什么”让孩子聪明?...
  7. AAD Connect 微软官方的描述准确吗?
  8. jquery中的each各种神奇遍历用法
  9. 鸽巢原理(抽屉原理)的详解
  10. python学习--DAY2