Hibernate入门学习【一】

简要介绍

Hibernate框架

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。
    简而言之,就是应用于持久层,用于与数据库交互,在java和web项目中适用。

orm

    即对象关系映射,一个类(对象)与一个数据库中的表格相对应。

配置

  1. Hibernate基本的jar包
    Hibernate基本的jar包
  2. JDBC需要的包
  3. log4j
    log4j
    若是java工程,日志输出文件直接放在src下,同理web项目放在javaResource的src下,log4j。properties的内容为:
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c\:mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###
# error warn info debug trace
log4j.rootLogger= info, stdout

  1. c3p0连接池的jar包。虽然实际上hibernate自带了连接池,但是一般不使用自带连接池,这里让hibernate使用c3p0,但是要注意若使用其他连接池,一定要在hibernate的配置文件内配置。
    在这里插入图片描述
<!-- 配置C3P0连接池 -->
		<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<!--在连接池中可用的数据库连接的最少数目 -->
		<property name="c3p0.min_size">5</property>
		<!--在连接池中所有数据库连接的最大数目  -->
		<property name="c3p0.max_size">20</property>
		<!--设定数据库连接的过期时间,以秒为单位,
		如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
		<property name="c3p0.timeout">120</property>
		 <!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
		<property name="c3p0.idle_test_period">3000</property>

Hibernate简单使用

一般流程

  1. 建立需要的关系型数据库
  2. 创建相应的实体类
  3. 映射
  4. Hibernate核心配置文件
  5. 引入Junit对其进行测试

映射

  1. 在xml文件中实现,可以随便命名,但是尽量统一命名映射文件为:类名.hbm.xml
  2. 在联网情况向下可以直接在文件里加入来源:
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  1. 也可以自己进行配置xml提示,各大框架适用:
    在eclipse中打开windows->perferences->xml catelog->User Specified Entries->Add
    在这里插入图片描述

  2. 类与表名建立映射
    属性:
    name: 类的全路径名
    table:表名
    catalog :数据库名

    <hibernate-mapping>
    	<class name="类的全路径名称" table="表名"> 
    	</class> 
    </hibernate-mapping>
    

    当类名与表名一致时,table可以省略不写

  3. 属性与字段建立映射
    主属性(主键):

    <id name="类中属性名" column="字段名称"> 
    			<generator class="native"></generator>
    </id>
    

    普通字段属性:

    <property name="类中属性名" column="字段名称"/>
    

    公共属性:
    name:类中属性名
    column:字段名称
    length:长度
    type:类型

    普通字段还包含:
    not-null:非空
    unquie:唯一
    当类中属性名与表中字段名一致时,column可以不写

  4. 简单的例子:

    <?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">
    <hibernate-mapping>
    	<class name="com.hibernate.demo01.Customer" table="cst_customer"> 
    		<!--类中属性与表中主键对应  -->
    		<id name="cust_id" column="cust_id"> 
    			<generator class="native"></generator>
    		</id>
    		<!-- 建立类中的普通的属性和表的字段的对应 -->
    		<property name="cust_name" column="cust_name" length="32" />
    		<property name="cust_source" column="cust_source" length="32"/>
    		<property name="cust_industry" column="cust_industry"/>
    		<property name="cust_level" column="cust_level"/>
    		<property name="cust_phone" column="cust_phone"/>
    		<property name="cust_mobile" column="cust_mobile"/>		
    	</class>    
    </hibernate-mapping>
    

    Hibernate核心配置文件

    1. 两种方式:
      1)属性文件,hibernate.properties
      2)xml文件,一般命名为hibernate.cfg.xml,基本上使用这种方法
          需要注意适用属性文件时,不能引入映射文件。引入来源、xml提示配置同上述映射操作。

    2. 基本配置并引入配置文件
      基本参数:
      驱动器、URL、用户名、密码
      可选参数:
      显示SQL——hibernate.show_sql
      格式化SQL——hibernate.format_sql
      自动建表——hibernate.hbm2ddl.auto
              a. none不自动建表
              b. creat有表先删表再建立新表
              c. creat-drop在creat的基础上最后再删表
              d. update有表则直接使用,无表创建
              e. validate只使用已有表,无表时不创建,一般用于检验类与表映射。

    	<hibernate-configuration>
    	<session-factory>
    		<!-- 连接数据库的基本参数 -->
    		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    		<property name="hibernate.connection.url">jdbc:mysql:///数据库名</property>
    		<property name="hibernate.connection.username">root</property>
    		<property name="hibernate.connection.password">abc</property>
    		<!-- 配置Hibernate的方言 -->
    		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    		
    		<!-- 可选配置================ -->
    		<!-- 打印SQL -->
    		<property name="hibernate.show_sql">true</property>
    		<!-- 格式化SQL -->
    		<property name="hibernate.format_sql">true</property>
    		<!-- 自动创建表 -->
    		<property name="hibernate.hbm2ddl.auto">update</property>
    		
    		<mapping resource="配置文件路径l"/>
    	</session-factory>
    </hibernate-configuration>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值