Hibernate入门

Posted jeat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate入门相关的知识,希望对你有一定的参考价值。

一、什么是Hibernate?

  Hibernate是(Object/relational mapping)对象关系映射的解決方案(框架),它是符合Java习惯的关系数据库持久化框架,为应用程序提供持久化服务,自动化程度更高ORM框架,不是面向SQL的持久层框架,以更加OO方式来编写数据读写代码

Hibernate在应用中的位置

 

 

Hibernate核心架构

 

  题外话:

  SSH=Struts(1/2)+Spring+Hibernate
  SSM=Spring MVC+Spring+Mybatis

  Spring Boot+Spring Data JPA(Hibernate) 4.3

 二、Configuration(配置)

 

1、Configuration 类负责管理Hibernate 的配置信息。它包括如下内容:
2、Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等。
3、Hibernate映射文件(*.hbm.xml)。
4、Configuration cfg = new Configuration();
5、cfg.configure("/hibernate.cfg.xml");

 三、SessionFactory

 

   会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。
  会话工厂在应用初始化时被创建,是一个重量级的类,它在多个应用线程间进行被共享,通常情况下,整个应用只有唯一的一个会话工厂,然而,如果你使用Hibernate访问多个数据库,你需要对每一个数据库使用一个会话工厂。
  应用程序从会话工厂里获得Session(会话)实例。
  SessionFactory sessionFactory = cfg.buildSessionFactory();

 

四、Transaction (事务)

  Transaction将应用代码从底层的事务实现中抽象出来——可能是一个JDBC事务或一个JTA事务,这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性。
  使用Hibernate进行操作时(增、删、改)必须显示的调用Transaction(默认:autoCommit=false)。
  Transaction tx = session.beginTransaction();

 五、配置详情

 1、hibernate.cfg.xml

<?xml version=\'1.0\' encoding=\'UTF-8\'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- jdbc信息连接配置 --> 
<property name="connection.url">jdbc:jtds:sqlserver://127.0.0.1/newsite</property>
<property name="connection.username">sa</property>
<property name="connection.password">sa</property>
<property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<!-- SQL方言 -->
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<!-- 控制台打印sql语句 , 建议开启-->
<property name="show_sql">true</property>
<!-- 创建表方式,详情见下文 -->
<property name="hibernate.hbm2ddl.auto">create</property>

<!-- 指定映射文件 -->
<mapping resource="com/test/hibernate/user/Users.hbm.xml" />
</session-factory>
</hibernate-configuration>

 

  

hibernate.hbm2ddl.auto属性值(从类自动生成数据库DDL操作)
1、create

如果设置为该值,则每次加载hibernate时(准确说应是创建SessionFactory时)都会删除以前创建的表而根据model重新生成表,即使前后的表没有任何变化,通常会造成数据库数据丢失,需谨慎使用这个取值

2、create-drop

与create差不多,所不同的是每次sessionFactory关闭时,就会删除所有表

3、update(最常用)

这个取值比较常用,需要先建立数据库,在第一次加载hibernate时会自动创建表,以后创建hibernate会自动根据model更新表结构,即使表结构改变了,以前的行不会被删除

4、validate

每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值

 

2、*.hbm.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.test.hibernate.user.Users" table="CA_USER">
<id column="USERID" name="userid" type="string" length="50">
<generator class="assigned" />
</id>
<property column="NAME" name="username" type="string" length="50" />
<property column="PASSWORD" name="password" type="string" length="50" update="false" />
</class>
</hibernate-mapping>

六、Hibernate基本数据类型

 

 

 

 

 OVER

THANKS

 

以上是关于Hibernate入门的主要内容,如果未能解决你的问题,请参考以下文章

hibernate多对多 一对多 及简单入门

hibernate框架的简单入门

Hibernate简述及入门实例

推荐net开发cad入门阅读代码片段

Hibernate入门

Hibernate入门