码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate入门

时间:2019-02-28 11:59:10      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:dash   source   语句   map   用户   用户名   配置信息   位置   show   

一、什么是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入门

标签:dash   source   语句   map   用户   用户名   配置信息   位置   show   

原文地址:https://www.cnblogs.com/jeat/p/10449360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!