SSH框架的总结(hibernate)(一)

SSH即为struts+spring+hibernate模式,当然最核心的是Struts,spring是绝大多数对象的生成,hibernate是对数据库的操作,hibernate是将数据库映射为一个类,对其的操作犹如对普通java类,利用面向对象的思想对数据库进行操作,对数据库的写入完成即是一个持久化过程,而持久化层即是把数据库实现当作一个独立逻辑拿出来,即数据库程序是在内存中的,为了使程序运行结束后状态得以保存。ORM即为object/relation mapping,是应用程序和数据库之间的桥梁。hibernate需要两种xml文件,一种是hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="hibernate.connection.password"></property>

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/xyz?characterEncoding=UTF-8</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

<property name="hibernate.format_sql">true</property>

<property name="hibernate.hbm2ddl.auto">update</property>

<mapping resource="org/crazyit/app/domain/News.hbm.xml"/>

</session-factory>

</hibernate-configuration>

一种是:表名.hbm.xml:

<?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="org.crazyit.app.domain.News" table="news">

<id name="id" type="java.lang.Integer">

<column name="id" />

<generator class="identity" />

</id>

<property name="title" type="java.lang.String">

<column name="title" />

</property>

<property name="content" type="java.lang.String">

<column name="content" />

</property>

</class>

</hibernate-mapping>

sessionfactory:单个数据库映射关系经过编译后的内存镜像。

session: 其是应用程序和持久存储层之间交互操作一个单线程对象。

持久化对象,已经处在持久化状态的对象,

瞬态对象和脱管对象:系统进行new关键字创建java实例,没有session关联,此时处于瞬态;

hibernate.connection.driver_class:设置数据库连接驱动;

hibernate.connection.url:设置数据库的url

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

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

hibernate.connection.pool_size:设置hibernate数据库连接池的最大并发连接数;

hibernate.dialect:设置数据库连接所使用的方言;

hibernate.show_sql:是否在控制台输出sql语句,其值为Boolean;

持久化对象PO=POJO+映射文件;

PO一共有三个状态,分别为:瞬态(从未能与session发生关联过),持久化(PO实例与session实例发生关联,并且关联到数据库的记录),托管(如果PO与session实例关联过,但是由于session关闭等原因,PO脱离了session的管理)。

PO的操作必须在session的管理下才能同步到数据库,sessionFactory工厂产生,sessionfactory是数据库编译后的内存镜像,通常一个对应一个sessionfactory对象,sessionfactory对象通常由configuration对象产生;configuration负责加载hibernate的配置文件。

get():立即加载;

 load():延迟加载。

在数据库表中通过主键实现记录识别的唯一性;而Hibernate中的持久化对象则通过标识符属性来实现唯一性识别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值