Hibernate的入门知识

目录

 

一、Spring结合Hibernate的使用

1.Spring加载Hibernate的SessionFactory :

2. SessionFactory的使用:

3.Session的openSession()和getCurrentSession() :

二、*.hbm.xml常用设置

三、列举主键生成策略

四、Hibernate.cfg.xml 标签配置:

五、Hibernate 的使用步骤


一、Spring结合Hibernate的使用

1.Spring加载Hibernate的SessionFactory :

<!-- 配置SessionFactory -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource" ref="dataSource"></property>

<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>

</bean>

2. SessionFactory的使用:

sessionFactory sf = new Configuration().configure().buildSessionFactory();

或是核心配置文件命名改变:

sessionFactory sf = new Configuration().configure(“config.cfg.xml”).buildSessionFactory();

3.Session的openSession()和getCurrentSession() :

openSession : 每次使用都新建;

GetCurrentSession() : 是单例模式的,线程安全的;

注意: 

GetCurrentSession 必须和current_session_context_class 结合使用;

<property> key="hibernate.current_session_context_class">thread</property>

(需要注意,这里的current_session_context_class属性有几个属性值:jta 、 thread 常用 , custom、managed 少用 )

a).thread使用connection 单数据库连接管理事务

b).jta (Java transaction api) Java 分布式事务管理 (多数据库访问),jta 由中间件提供(JBoss WebLogic 等, 但是tomcat 不支持)

二、*.hbm.xml常用设置

<hibernate-mapping

    schema="schemaName" //设置模式名字

    catalog="catalogName"   //设置目录名称

    default-cascade="cascade_style" //级联风格

    default-access="field|property|ClassName"   //访问策略

    default-lazy="true|false"   //加载策略

    package="packagename"       //设置默认包名

/>

说明:
schema和catalog 为了解决命名冲突,在数据库中,有多个catalog,一个catalog有多个schema,而数据库的对象(table,存储过程,视图,索引等)组成了schema。有时catalog 对应的是数据库名,schema对应的是数据库用户名。

<class

    name="ClassName"    //映射到哪个类

    table="tableName"   //映射到哪张表

    batch-size="N"      //抓取策略,一次抓取多少条记录

    where="condition"   //抓取条件

    entity-name="EntityName"    //支持一个实体类映射到多张表

/>

说明: 

entity-name : 当一个model类对应多张表时,可能两张表有相同的字段,也有不同的字段,该属性就适用于这种情况。

<id  //id表示主键

    name="propertyName" //映射到哪个属性

    type="typename"     //数据类型

    column="column_name"//数据库中字段名

    length="length"     //数据长度

    <generaotr class="generatorClass"/>   //主键生成策略

/>

三、列举主键生成策略

generator标签Class取值有哪些,其主要作用是:

  • Assigned : 自定义主键生成策略,一般通过setter方法设置主键的值;
  • Increment : 查找该表中主键的最大值,在基础上加1;
  • Hilo (high low) : 通过一个额外的表保存hi的值。
<id name=”id” >  

    <generaotr class="hilo">   //主键生成策略

<param table=”hibernate_hilo” />

<param column=”next_hi” />

<param maxlo=”100” />

</generaotr >

</id>

<!--说明: 如果自己不新建表的话,默认是hibernate_hilo, 列next_hi-->
  • Seqhilo: 将表替换成序列,序列需要提前新建好;
  • Uuid: 32位,删除了“-”;
  • GUID : 128位,全球唯一标识符;
  • Foreign(外键):
<id name=”id” >  

    <generaotr class="foreign">   //主键生成策略

<param name=”property” value=”user” />

</generaotr >

</id>

<one-to-one name=”user” class=”domain.User” constrained=”true”/>
  • Identify : 自增长,如sql server ;
  • Sequence : 序列,如Oracle;
  • Native : 三选一,分别是identify, sequence, hilo;

四、Hibernate.cfg.xml 标签配置:

<hibernate-configuration>
<session-factory>
	<!--方言  -->
	<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
	<!--是否展示sql  -->
	<property name="show_sql">true</property>
	<!-- update,若对象有更新,则更新,create 表示重新生成,可能造成数据丢失 -->
	<property name="hbm2ddl.autuo">update</property>

	<!-- 导入映射配置 -->
	<mapping resource="com/exercise/model/Users.hbm.xml" />

</session-factory>
</hibernate-configuration>

五、Hibernate 的使用步骤

  •   Hibernate.cfg.mxl :

        配置数据源,以及映射*.hbm.xml 文件;

  • ****.hbm.xml :

        配置pojo类相关字段属性;

  • 持久化类JavaBean:

        要求如下:

  • 只有getter和setter方法,没有业务方法;
  • 要有主键字段;
  • 可序列化:实现java.io.Serializable 接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值