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入门的主要内容,如果未能解决你的问题,请参考以下文章