Hibernate学习笔记
1.通过 Hibernate 连接数据库 ---配置文件
1.创建 xml 格式的配置文件
Hibernate 默认的 xml 格式的配置文件名称为 hibernate.cfg.xml。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!--SessionFactory 配置-->
<session-factory>
<!--指定数据库使用的SQL方言-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--指定连接数据库用的驱动,地址,用户名,密码-->
<property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
<property name="connection.url">jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=数据库名</property>
<property name="connection.username">用户名</property>
<property name="connection.password">密码</property>
<!--指定当程序运行时是否在控制台输出 SQL 语句。默认为false,建议调试程序为true-->
<property name="show_sql">true</property>
<!--指定当程序运行时是否按照标准格式在控制台上输出 SQL 语句。默认为 false。建议在调试程序时设为 true-->
<property name="format_sql">true</property>
<!--指定当程序运行时,是否在 SQL 语句中输出便于调试的注释信息。默认为 false。建议在调试程序时设为true-->
<property name="use_sql_comments">true</property>
<!--指定持久化类映射文件的位置,由包名与映射文件组成,包名与映射文件之间用“/” 分隔。-->
<mapping resource="com/BranchForm.hbm.xml"/>
</session-factory>
</hibernate-configuration>
2.创建 Java 属性文件格式的配置文件
Hibernate 默认的 Java 属性文件格式的配置文件名称为 hibernate.properties。其基本格式如下
#指定连接数据库使用的 SQL 方言#
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
#指定连接数据库的驱动程序#
hibernate.connection.driver_class=com.microsoft.jdbc.sqlserver.SQLServerDriver
#指定连接数据库的 URL#
hibernate.connection.url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=数据库名
#指定连接数据库的用户名#
hibernate.connection.username=用户名
#指定连接数据库的密码#
hibernate.connection.password=密码
#指定在执行程序时,是否在控制台上输出 SQL 语句#
hibernate.show_sql=true
#指定是否按照标准格式在控制台上输出 SQL 语句#
hibernate.format_sql=true
#指定是否在 SQL 语句中输出便于调试的注释信息#
hibernate.use_sql_comments=true
3.创建持久化类及映射文件
Hibernate 从本质上来讲是一种“对象-关系型数据映射” , Hibernate 基础代码包括持久化(POJO)类和对应的映射文件。
1.创建持久化类
package com;
public class Book { private Integer id; private String bookName; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public Book(Integer id, String bookName) { super(); this.id = id; this.bookName = bookName; }
2.创建映射文件
Hibernate 采用 XML 格式的文件来指定对象和关系数据库之间的映射。在 Hibernate 中,映射文件通常以“.hbm.xml” 作为后缀名,该文件与持久化类存放在同一目录下。
<?xml version="1.0"?> <!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.Book" table="BOOK"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native" /> </id> <property name="bookName" colum="BOOK_NAME" type="java.lang.String"> </property> </class> </hibernate-mapping>
注意:<generator>表示一个主键的生成机制。Hibernate的Generator属性有7种class。
1)identity:用于MySql数据库。特点:递增
注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。
2)sequence:用于Oracle数据库
3)native:跨数据库时使用,由底层方言产生。
注:使用native时Hibernate默认会去查找Oracle中的hibernate_sequence序列。 如果Oracle中没有该序列,连Oracle数据库时会报错。
4)hilo:通过高低位合成id,先建表hi_value,再建列next_value。必须要有初始值。
5)sequencehilo:同过高低位合成id,建一个sequence序列,不用建表。
6)assigned:用户自定义id;
7)foreign:用于一对一关系共享主健时,两id值一样。
<property>子元素用于设定类的属性和表字段的映射,该元素主要包括 name、 column、 type 和 not-null 属性。
![](https://images2018.cnblogs.com/blog/788088/201712/788088-20171209163946714-1481582840.png)
4.构建 SessionFactory
Hibernate 的 SessionFactory 接口提供 Session 类的实例, Session 类完成对数据库的操作。由于 SessionFactory 实例是线程安全的(而 Session 实
例不是线程安全的),所以每个操作都可以共用同一个 SessionFactory 来获取 Session。
1.从 XML 文件读取配置信息构建 SessionFactory
Configuration config = new Configuration().configure("book.cfg.xml");
SessionFactory sessionFactory = config.buildSessionFactory();
configura()方法:用于告诉 Hibernate 加载 hibernate.cfg.xml 文件。 Configuration 在实例化时默认加载 classpath 中的 hibernate.cfg.xml
2.从 Java 属性文件读取配置信息构建 SessionFactory
Configuration config = new Configuration(); config.addClass(Book.class); SessionFactory sessionFactory = config.buildSessionFactory();