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 属性。 

 

 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();




 







原文地址:https://www.cnblogs.com/mcahkf/p/8011152.html