第4.21课 上课 配置文件介绍, hibernate体系结构, 持久化对象的状…

4_21

配置文件介绍

 全局配置文件

  hibernate.cfg.xml

1.数据库方言:

hibernate.dialect : org.hibernate.dialect.MySQL5InnoDBDialect

 

2.是否显示SQL语句:

hibernate.show_sql : true|false

 

3.是否格式化SQL语句:

hibernate.format_sql : true|false

 

4.配置是否支持自动创建表:

hibernate.hbm2ddl.auto: create_drop|create|update|validate

 

5.数据库连接的信息:

hibernate.connection.driver_class : 数据库驱动类

hibernate.connection.url : 连接数据库URL

hibernate.connection.username : 连接数据库用户名

hibernate.connection.password : 连接数据库密码

 

6.c3p0连接池的信息:

hibernate.c3p0.max_size : 最大连接数

hibernate.c3p0.min_size : 最小连接数

 

 

7.配置持久化类:

<mapping class="com.yayadou.domain.Person"/>

<mapping resource="com/yayadou/domain/User.hbm.xml"/>

  hibernate.properties + 持久化类

   hibernate.properties

#-- 配置数据库方言,告诉Hibernate4我们用得是什么样的数据库

hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

#-- 配置显示SQL语句

hibernate.show_sql=true

#-- 配置格式化SQL语句

hibernate.format_sql=true

 

#-- 配置是否支持自动创建表:

# create-drop: 当创建SessionFactory时就会创建表、当SessionFactory关闭时就会删除表.

# create: 当创建SessionFactory时先删除表,再创建表 (每次)

# update: 当创建SessionFactory时会判断,如果表不存在就创建表,存在就不会创建表,后面会修改表结构.

# validate : 只做验证(不会创建表) (不需要Hibernate4创建表)

hibernate.hbm2ddl.auto=update

 

#-- 配置连接数据库的驱动类

hibernate.connection.driver_class=com.mysql.jdbc.Driver

#-- 配置连接数据库的URL (创建数据库)

hibernate.connection.url=jdbc:mysql://localhost:3306/hibernate_db

#-- 配置连接数据库的用户名

hibernate.connection.username=root

#-- 配置连接数据库的密码

hibernate.connection.password=root

#-- 配置c3p0连接池中最大连接数

hibernate.c3p0.max_size=10

#-- 配置c3p0连接池中最小连接数

hibernate.c3p0.min_size=2

   添加持久化类

/** 第一步:创建Configuration */

Configuration configuration = new Configuration() // 默认加载hibernate.properties属性文件

.addAnnotatedClass(Person.class) // 添加持久化类

.addAnnotatedClass(Xxx.class); // 添加持久化类

 缓存配置文件

  ehcache.xml

 持久化类配置文件

  xxx.hbm.xml

xxx.hbm.xml

hbm: Hibernate Mapping (Hibernate映射文件)

 

 

<!-- package: 包名 -->

<hibernate-mapping package="com.yayadou.domain">

 

<!-- name:指定类名 table:指定表名 -->

<class name="User" table="USER_INFO">

<!-- 主键列 -->

<id name="id" column="user_id">

<!-- 指定主键生成策略 -->

<generator class="native"/>

</id>

<!-- 属性名转化成表中列名 -->

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

<!-- 属性名转化成表中列名 -->

<property name="phone" column="user_phone"/>

<property name="属性名" column="表中列名"/>

</class>

 

</hibernate-mapping>

hibernate体系结构

 概览图

 完整体系图

持久化对象的状态

持久化类 持久化对象 = new 持久化类();

 瞬态(Transient)

Transient 瞬态:

new 持久化类(),刚new出来的,从来没有与Session关联过.

也就是没有调用Session的方法对它进行操作过。

 持久化(Persistent)

Persistent 持久化状态: 正在被Session管理中。调用Session的方法对它进行操作过,这个时候Session没有关闭.

该对象正在Session一级缓存中.(一级缓存中的对象都是存放在内存中).

 

如果你调用持久化状态对象的set方法,它会影响数据库表中的数据.

你对持久化状态对象做的修改,会同步到底层的数据库表中,

它不是立即同步到底层的数据库,默认是在事务提交时才同步。

 脱管(Detached)

Detached 脱管状态:脱离了Session的管理,曾经被Session管理过,现在没有被Session管理。

Session的几个主要方法概览

Session的主要方法说明:

1.保存(添加)

-- Serializable save(entity); // entity : 持久化状态

-- void saveOrUpdate(entity); // entity : 持久化状态

-- void persist(entity); // entity : 持久化状态

-- Object obj = merge(entity); // entity : 瞬态,obj : 持久化状态

 

 

2.修改

-- void update(entity); // entity : 持久化状态

-- void saveOrUpdate(entity); // entity : 持久化状态

-- Object obj = merge(entity); // entity : 瞬态,obj : 持久化状态

 

 

3.删除

-- void delete(entity); // entity : 瞬态

 

4.根据主键获取实体

-- Object entity = session.get(持久化类, 主键id值); // entity : 持久化状态

-- Object entity = session.load(持久化类, 主键id值); // entity : 持久化状态

posted on 2018-01-31 22:23  東風★破  阅读(153)  评论(0)    收藏  举报

导航