10/19 duiHibernate 的复习总结

每日对Hbernate 的复习
hibernate 简介:

hibernate 是一个开源框架,它是面想对象的一个开源框架,它对JDBC做了轻量级的封装,而我们java程序员
可以使用面向对象的思想来操纵数据库

一 为什么要使用Hibernate

1.对jdbc访问数据库的代码做了封装,大大简化了数据访问层的繁琐的重复性代码

2.Hibernate是一个基于jdbc的主流框架,这是一个优秀的orm实现,他很大程度简化了dao层的编码工作

二 Hibernate框架的优缺点?

1.Hibernate 功能强大,是java应用关系数据库之间的桥梁,较之jdbc方式操作数据库,代码量大大减少,提高了持久化的代码

降低了维护成本

2.可移植性好。对于修改 /更换 数据库,通常只修改Hibernate配置文件即可

缺点:

不适合大场地

修改删除不适合用hibernate
步骤1 搭配之构建jdbc
<?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="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">happy1</property>
<property name="connection.password">happy1</property>
<!-- SQL dialect SQL方言 -->
<property name="dialect"> org.hibernate.dialect.Oracle10gDialect</property>
<!-- Enable Hibernate's automatic session context management session和当前线程绑定-->
<!--
 如果在Hibernate配置文件中,参数current_session_context_class设置为thread,并采用SessionFactory的getCurrentSession()方法获得Session对象,则不需要执行session.close()方法。
-->
<property name="current_session_context_class">thread</property>
<!--打印sql 控制台-->
<property name="show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!--自动构建表结构 create 先delete表结构 再创建,update直接更新表结构-->
<!-- update 加载hibernate自动更新数据库结构 -->
<property name="hbm2ddl.auto">update</property>
<!--关联entity--><!--找小配置-->
<!-- <mapping resource="cn/happy/entity/Dog.hbm.xml"/>-->
<!-- <mapping resource="cn/hql/entity/demp.hbm.xml"/>
<mapping resource="cn/hbm02/dynamic/Emp.hbm.xml"/>-->
<!--<mapping resource="cn/hbm03happ/manyone/Dept.hbm.xml"/>
<mapping resource="cn/hbm03happ/manyone/Emp.hbm.xml"/>-->
<!-- <mapping class="cn.hbm07.People"/>
<mapping class="cn.hbm07.Card"/>-->
<!-- <mapping resource="cn/hbm03happ/onetomanydouble/Dept.hbm.xml"></mapping>
<mapping resource="cn/hbm03happ/onetomanydouble/Emp.hbm.xml"></mapping>
<mapping resource="cn/hbm03happ/manytomany/Employee.hbm.xml"></mapping>
<mapping resource="cn/hbm03happ/manytomany/Project.hbm.xml"></mapping>-->
<!-- <mapping class="cn.hbonetomany.Dept"/>
<mapping class="cn.hbonetomany.Emp"/>-->
<mapping class="cn.hbmanytomany.Student"/>
<mapping class="cn.hbmanytomany.Teacher"/>
</session-factory>
</hibernate-configuration>


主键生成策略 :


identity

identity由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,使用identity的前提条件是底层数据库支持自动增长字段类型,如DB2、SQL Server、MySQL、Sybase和HypersonicSQL等,Oracle这类没有自增字段的则不支持。

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

<generator class="identity" />

</id>

特点:只能用在支持自动增长的字段数据库中使用,如MySQL。

注释方式与配置文件底层实现方式相同,只是配置的方式换成了注释方式

自动增长,适用于支持自增字段的数据库

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)


native

native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用sequence。

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

<generator class="native" />

</id>

 

@Test
public void test03(){
//Configuration 接口类 可以new
Configuration cfg=new Configuration().configure();//1
//session对象
SessionFactory factory=cfg.buildSessionFactory(); //2
Session session = factory.openSession(); //3

Dog dog=session.load(Dog.class,1);
System.out.println(dog.getDogname());
session.close();
/*
* 所有增删改操作
* */
}

 

posted @ 2017-10-19 16:26  liuzhe01  阅读(133)  评论(0编辑  收藏  举报